package com.telefonica.euro_iaas.placement.rest; import java.util.List; import javax.ws.rs.Path; import javax.ws.rs.WebApplicationException; import javax.ws.rs.core.Response; import javax.xml.bind.JAXBElement; import javax.xml.namespace.QName; import org.dmtf.schemas.ovf.envelope._1.EnvelopeType; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Scope; import org.springframework.stereotype.Component; import com.telefonica.euro_iaas.placement.core.ModelTranslator; import com.telefonica.euro_iaas.placement.core.ProviderService; import com.telefonica.euro_iaas.placement.exception.EntityNotFoundException; import com.telefonica.euro_iaas.placement.model.CloudProviderList; import com.telefonica.euro_iaas.placement.model.application.VDC; import com.telefonica.euro_iaas.placement.model.provider.CloudProvider; import com.telefonica.schemas.nuba_model.exp.ArrayCIMUserEntityType; import com.telefonica.schemas.nuba_model.exp.CIMUserEntityType; import com.telefonica.schemas.tcloud._1.InstantiateOvfParamsType; @Path("/") @Component @Scope("request") public class ProviderControllerImpl implements ProviderController { private static final Logger LOGGER = LoggerFactory.getLogger(ProviderController.class); @Autowired ModelTranslator modelTranslator; @Autowired ProviderService providerService; /* (non-Javadoc) * @see com.telefonica.euro_iaas.placement.rest.ProviderController#listProviderMapping() */ @Override public JAXBElement<ArrayCIMUserEntityType> ovfListProviderMapping(EnvelopeType envelope) { VDC clientVDC = modelTranslator.getVDC(envelope); List<CloudProvider> listAllowedProviders = null; try { listAllowedProviders = providerService.getAllowedCloudProviders(clientVDC); } catch (EntityNotFoundException e) { LOGGER.warn("Cloud provider not found"); throw new WebApplicationException(Response.Status.NOT_FOUND); } //CloudProviderList cpl = modelTranslator.getCloudProviderList(listAllowedProviders); CloudProviderList cpl = new CloudProviderList(); cpl.setRelations(listAllowedProviders); return new JAXBElement<ArrayCIMUserEntityType>(new QName("ArrayCCIM_UserEntity_Type"), ArrayCIMUserEntityType.class,modelTranslator.getArrayUserEntity(cpl)); } /* (non-Javadoc) * @see com.telefonica.euro_iaas.placement.rest.ProviderController#ovfProviderMapping(org.dmtf.schemas.ovf.envelope._1.EnvelopeType) */ @Override public JAXBElement<CIMUserEntityType> ovfProviderMapping(EnvelopeType envelope) { VDC clientVDC = modelTranslator.getVDC(envelope); CloudProvider bestProvider = null; try { bestProvider = providerService.getBestCloudProvider(clientVDC); } catch (EntityNotFoundException e) { LOGGER.warn("Cloud provider not found"); throw new WebApplicationException(Response.Status.NOT_FOUND); } LOGGER.warn("ProviderControllerImpl BYE"); return new JAXBElement<CIMUserEntityType>(new QName("CIM_UserEntity_Type"), CIMUserEntityType.class,modelTranslator.getUserEntity(bestProvider)); } /* (non-Javadoc) * @see com.telefonica.euro_iaas.placement.rest.ProviderController#listProviderMapping(com.telefonica.schemas.tcloud._1.InstantiateOvfParamsType) */ @Override public JAXBElement<ArrayCIMUserEntityType> listProviderMapping( InstantiateOvfParamsType instantiateOvfParams) { VDC clientVDC = modelTranslator.getVDC(instantiateOvfParams.getEnvelope()); List<CloudProvider> listAllowedProviders = null; try { listAllowedProviders = providerService.getAllowedCloudProviders(clientVDC); } catch (EntityNotFoundException e) { LOGGER.warn("Cloud provider not found"); throw new WebApplicationException(Response.Status.NOT_FOUND); } //CloudProviderList cpl = modelTranslator.getCloudProviderList(listAllowedProviders); CloudProviderList cpl = new CloudProviderList(); cpl.setRelations(listAllowedProviders); return new JAXBElement<ArrayCIMUserEntityType>(new QName("ArrayCCIM_UserEntity_Type"), ArrayCIMUserEntityType.class,modelTranslator.getArrayUserEntity(cpl)); } /* (non-Javadoc) * @see com.telefonica.euro_iaas.placement.rest.ProviderController#providerMapping(com.telefonica.schemas.tcloud._1.InstantiateOvfParamsType) */ @Override public JAXBElement<CIMUserEntityType> providerMapping( InstantiateOvfParamsType instantiateOvfParams) { VDC clientVDC = modelTranslator.getVDC(instantiateOvfParams.getEnvelope()); CloudProvider bestProvider = null; try { bestProvider = providerService.getBestCloudProvider(clientVDC); } catch (EntityNotFoundException e) { LOGGER.warn("Cloud provider not found"); throw new WebApplicationException(Response.Status.NOT_FOUND); } LOGGER.warn("ProviderControllerImpl BYE"); return new JAXBElement<CIMUserEntityType>(new QName("CIM_UserEntity_Type"), CIMUserEntityType.class,modelTranslator.getUserEntity(bestProvider)); } }