/* * Copyright (c) 2017 EMC Corporation * All Rights Reserved */ package com.emc.sa.service.vipr.block.tasks; import java.net.URI; import java.util.ArrayList; import java.util.List; import com.emc.sa.service.vipr.block.ExportVMwareBlockVolumeHelper; import com.emc.sa.service.vipr.tasks.WaitForTask; import com.emc.storageos.db.client.util.NullColumnValueGetter; import com.emc.storageos.model.block.export.ExportGroupRestRep; import com.emc.storageos.model.block.export.ExportUpdateParam; import com.emc.storageos.model.block.export.HostsUpdateParam; import com.emc.storageos.model.block.export.VolumeParam; import com.emc.storageos.model.block.export.VolumeUpdateParam; import com.emc.vipr.client.Task; public class AddHostAndVolumeToExportNoWait extends WaitForTask<ExportGroupRestRep> { private final URI exportId; private final URI hostId; private final URI volumeId; private final Integer hlu; public AddHostAndVolumeToExportNoWait(URI exportId, URI hostId, URI volumeId, Integer hlu) { super(); this.exportId = exportId; this.hostId = hostId; this.volumeId = volumeId; this.hlu = hlu; provideDetailArgs(exportId, hostId); } @Override protected Task<ExportGroupRestRep> doExecute() throws Exception { ExportUpdateParam exportUpdateParam = new ExportUpdateParam(); List<VolumeParam> volumes = new ArrayList<VolumeParam>(); if (!NullColumnValueGetter.isNullURI(volumeId)) { VolumeParam volume = new VolumeParam(volumeId); volume.setLun(-1); if (hlu != null && !hlu.equals(ExportVMwareBlockVolumeHelper.USE_EXISTING_HLU)) { volume.setLun(hlu); } volumes.add(volume); exportUpdateParam.setVolumes(new VolumeUpdateParam(volumes, new ArrayList<URI>())); } if (!NullColumnValueGetter.isNullURI(hostId)) { exportUpdateParam.setHosts(new HostsUpdateParam()); exportUpdateParam.getHosts().getAdd().add(hostId); } return getClient().blockExports().update(exportId, exportUpdateParam); } }