/*
* Copyright (c) 2015 EMC Corporation
* All Rights Reserved
*/
package com.emc.sa.api;
import static com.emc.sa.api.mapper.ServiceDescriptorMapper.map;
import java.util.Collection;
import java.util.List;
import java.util.Locale;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;
import org.springframework.beans.factory.annotation.Autowired;
import com.emc.sa.descriptor.ServiceDescriptor;
import com.emc.sa.descriptor.ServiceDescriptors;
import com.emc.storageos.security.authorization.ACL;
import com.emc.storageos.security.authorization.DefaultPermissions;
import com.emc.storageos.security.authorization.Role;
import com.emc.vipr.model.catalog.ServiceDescriptorList;
import com.emc.vipr.model.catalog.ServiceDescriptorRestRep;
import com.google.common.collect.Lists;
@DefaultPermissions(
readRoles = { Role.TENANT_ADMIN, Role.SYSTEM_MONITOR, Role.SYSTEM_ADMIN },
writeRoles = { Role.TENANT_ADMIN },
readAcls = { ACL.ANY })
@Path("/catalog/service-descriptors")
public class ServiceDescriptorService extends CatalogResourceService {
@Autowired
private ServiceDescriptors serviceDescriptors;
/**
* List service descriptors
*
* @prereq none
* @brief List service descriptors
* @return List of service descriptors
*/
@GET
@Produces({ MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON })
@Path("")
public ServiceDescriptorList getServiceDescriptors() {
Collection<ServiceDescriptor> descriptors = this.serviceDescriptors.listDescriptors(Locale.getDefault());
List<ServiceDescriptorRestRep> serviceDescriptors = Lists.newArrayList();
for (ServiceDescriptor descriptor : descriptors) {
serviceDescriptors.add(map(descriptor));
}
ServiceDescriptorList serviceDescriptorList = new ServiceDescriptorList(serviceDescriptors);
return serviceDescriptorList;
}
/**
* Retrieve service descriptors
*
* @prereq none
* @brief Retrieve service descriptor
* @return Service descriptor
*/
@GET
@Produces({ MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON })
@Path("/{serviceId}")
public ServiceDescriptorRestRep getServiceDescriptor(@PathParam("serviceId") String serviceId) {
ServiceDescriptor descriptor = this.serviceDescriptors.getDescriptor(Locale.getDefault(), serviceId);
return map(descriptor);
}
}