/* * 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.VolumeGroupSnapshotSessionUnlinkTargetsParam; import com.emc.storageos.model.block.SnapshotSessionUnlinkTargetParam; import com.emc.vipr.client.Tasks; import com.google.common.collect.Lists; public class UnlinkSnapshotSessionForApplication extends WaitForTasks<TaskResourceRep> { private final URI applicationId; private final List<URI> snapshotSessions; private final List<String> existingLinkedSnapshotIds; private final Boolean deleteTarget; public UnlinkSnapshotSessionForApplication(URI applicationId, List<URI> snapshotSessions, List<String> existingLinkedSnapshotIds, Boolean deleteTarget) { this.applicationId = applicationId; this.snapshotSessions = snapshotSessions; this.existingLinkedSnapshotIds = existingLinkedSnapshotIds; this.deleteTarget = deleteTarget; provideDetailArgs(applicationId, snapshotSessions); } @Override protected Tasks<TaskResourceRep> doExecute() throws Exception { VolumeGroupSnapshotSessionUnlinkTargetsParam input = new VolumeGroupSnapshotSessionUnlinkTargetsParam(); input.setSnapshotSessions(snapshotSessions); input.setPartial(true); List<SnapshotSessionUnlinkTargetParam> linkedTargets = Lists.newArrayList(); if (existingLinkedSnapshotIds != null) { for (String linkedSnapshot : existingLinkedSnapshotIds) { SnapshotSessionUnlinkTargetParam param = new SnapshotSessionUnlinkTargetParam(); param.setId(uri(linkedSnapshot)); if (deleteTarget != null) { param.setDeleteTarget(deleteTarget); } linkedTargets.add(param); } } input.setLinkedTargets(linkedTargets); TaskList taskList = getClient().application().unlinkApplicationSnapshotSession(applicationId, input); return new Tasks<TaskResourceRep>(getClient().auth().getClient(), taskList.getTaskList(), TaskResourceRep.class); } }