/* * Copyright (c) 2015 EMC Corporation * All Rights Reserved */ package controllers.api; import static com.emc.vipr.client.core.util.ResourceUtils.uri; import static render.RenderApiModel.renderApi; import static util.BourneUtil.getCatalogClient; import static util.api.ApiMapperUtils.newApprovalInfo; import static util.api.ApiMapperUtils.newApprovalReference; import java.net.URI; import java.util.List; import play.mvc.Controller; import play.mvc.With; import com.emc.storageos.model.NamedRelatedResourceRep; import com.emc.vipr.model.catalog.ApprovalRestRep; import com.emc.vipr.model.catalog.ApprovalUpdateParam; import com.emc.vipr.model.catalog.Reference; import com.google.common.collect.Lists; import controllers.Common; import controllers.deadbolt.Restrict; import controllers.deadbolt.Restrictions; /** * Approvals API * * @author Chris Dail */ @With(Common.class) @Restrictions({ @Restrict("TENANT_APPROVER") }) public class ApprovalsApi extends Controller { public static void pending() { List<Reference> approvals = Lists.newArrayList(); List<ApprovalRestRep> pendingApprovals = getCatalogClient().approvals().search().byStatus(ApprovalRestRep.PENDING).run(); for (ApprovalRestRep request : pendingApprovals) { approvals.add(newApprovalReference(request.getId().toString())); } renderApi(approvals); } public static void approvals() { List<Reference> approvals = Lists.newArrayList(); List<NamedRelatedResourceRep> allApprovals = getCatalogClient().approvals().listByUserTenant(); for (NamedRelatedResourceRep element : allApprovals) { approvals.add(newApprovalReference(element.getId().toString())); } renderApi(approvals); } public static void approval(String approvalId) { ApprovalRestRep approval = getCatalogClient().approvals().get(uri(approvalId)); renderApi(newApprovalInfo(approval)); } public static void approve(String approvalId, String message) { action(uri(approvalId), ApprovalRestRep.APPROVED, message); } public static void reject(String approvalId, String message) { action(uri(approvalId), ApprovalRestRep.REJECTED, message); } private static void action(URI approvalId, String status, String message) { ApprovalUpdateParam updateParam = new ApprovalUpdateParam(); updateParam.setApprovalStatus(status); updateParam.setMessage(message); getCatalogClient().approvals().update(approvalId, updateParam); ApprovalRestRep approval = getCatalogClient().approvals().get(approvalId); renderApi(newApprovalInfo(approval)); } }