/* * Copyright (c) 2016 EMC * All Rights Reserved */ package com.emc.sa.service.vipr.application.tasks; import java.net.URI; import java.util.List; import com.emc.sa.service.vipr.tasks.WaitForTasks; import com.emc.storageos.model.TaskList; import com.emc.storageos.model.TaskResourceRep; import com.emc.storageos.model.application.VolumeGroupSnapshotSessionLinkTargetsParam; import com.emc.storageos.model.application.VolumeGroupSnapshotSessionRelinkTargetsParam; import com.emc.storageos.model.block.SnapshotSessionNewTargetsParam; import com.emc.vipr.client.Tasks; public class LinkSnapshotSessionForApplication extends WaitForTasks<TaskResourceRep> { private final URI applicationId; private final List<URI> snapSessions; private final List<URI> linkedTargets; private final String copyMode; private final Integer count; private final String targetName; public LinkSnapshotSessionForApplication(URI applicationId, List<URI> snapSessions, List<URI> linkedTargets, String copyMode, Integer count, String targetName) { this.applicationId = applicationId; this.snapSessions = snapSessions; this.linkedTargets = linkedTargets; this.targetName = targetName; this.count = count; this.copyMode = copyMode; provideDetailArgs(applicationId, snapSessions); } @Override protected Tasks<TaskResourceRep> doExecute() throws Exception { TaskList taskList = null; if (linkedTargets != null && !linkedTargets.isEmpty()) { VolumeGroupSnapshotSessionRelinkTargetsParam relinkParam = new VolumeGroupSnapshotSessionRelinkTargetsParam(); relinkParam.setLinkedTargetIds(linkedTargets); relinkParam.setPartial(true); relinkParam.setSnapshotSessions(snapSessions); taskList = getClient().application().relinkApplicationSnapshotSession(applicationId, relinkParam); } else { VolumeGroupSnapshotSessionLinkTargetsParam input = new VolumeGroupSnapshotSessionLinkTargetsParam(); input.setSnapshotSessions(snapSessions); input.setPartial(true); SnapshotSessionNewTargetsParam newLinkedTargets = new SnapshotSessionNewTargetsParam(); newLinkedTargets.setCopyMode(copyMode); newLinkedTargets.setCount(count); newLinkedTargets.setTargetName(targetName); input.setNewLinkedTargets(newLinkedTargets); taskList = getClient().application().linkApplicationSnapshotSession(applicationId, input); } return new Tasks<TaskResourceRep>(getClient().auth().getClient(), taskList.getTaskList(), TaskResourceRep.class); } }