/*
* Copyright (c) 2015 EMC Corporation
* All Rights Reserved
*/
package com.emc.vipr.client.core;
import com.emc.storageos.model.auth.RoleAssignmentChanges;
import com.emc.storageos.model.auth.RoleAssignmentEntry;
import com.emc.storageos.model.auth.RoleAssignments;
import static com.emc.vipr.client.core.impl.PathConstants.*;
import com.emc.storageos.model.vpool.VDCCapacities;
import com.emc.vipr.client.impl.RestClient;
import com.emc.vipr.client.core.util.ResourceUtils;
import com.emc.vipr.model.keystore.CertificateChain;
import java.util.List;
public class VirtualDataCenter {
protected final RestClient client;
public VirtualDataCenter(RestClient client) {
this.client = client;
}
protected String getRoleAssignmentsUrl() {
return VDC_URL + ROLE_ASSIGNMENT_PATH;
}
/**
* Gets the Capacities for the Virtual Data Center.
* <p>
* API Call: <tt>GET /vdc/capacities</tt>
*
* @return The VDC Capacities
*/
public VDCCapacities getCapacities() {
return client.get(VDCCapacities.class, VDC_CAPACITIES_URL);
}
/**
* Gets the certificate chain that identifies a ViPR vdc.
* <p>
* API Call: <tt>GET /vdc/keystore</tt>
*
* @return The Certificate chain
*/
public CertificateChain getCertificateChain() {
return client.get(CertificateChain.class, KEYSTORE_URL);
}
/**
* Get Role Assignments for the VDC.
*
* @return the list of RoleAssignmentEntry
*/
public List<RoleAssignmentEntry> getRoleAssignments() {
RoleAssignments response = client.get(RoleAssignments.class, getRoleAssignmentsUrl());
return ResourceUtils.defaultList(response.getAssignments());
}
/**
* Update Role Assignments for the VDC.
*
* @param roleChanges
* Role assignment changes
* @return the list of RoleAssignmentEntry
*/
public List<RoleAssignmentEntry> updateRoleAssignments(RoleAssignmentChanges roleChanges) {
RoleAssignments response = client.put(RoleAssignments.class, roleChanges, getRoleAssignmentsUrl());
return ResourceUtils.defaultList(response.getAssignments());
}
/**
* prepare the vdc to fulfill the requirement of being able to add other vdc in this one.
* tasks are:
* 1. remove root's roles from all tenants
* 2. remove root's ownership from all projects
* <p>
* API Call: <tt>POST /vdc/prepare-vdc</tt>
*/
public void prepareVdc() {
client.post(String.class, PREPARE_VDC_URL);
}
}