/** * Abiquo community edition * cloud management application for hybrid clouds * Copyright (C) 2008-2010 - Abiquo Holdings S.L. * * This application is free software; you can redistribute it and/or * modify it under the terms of the GNU LESSER GENERAL PUBLIC * LICENSE as published by the Free Software Foundation under * version 3 of the License * * This software is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * LESSER GENERAL PUBLIC LICENSE v.3 for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the * Free Software Foundation, Inc., 59 Temple Place - Suite 330, * Boston, MA 02111-1307, USA. */ package com.abiquo.abiserver.services.flex; import java.util.List; import com.abiquo.abiserver.appslibrary.stub.AppsLibraryStub; import com.abiquo.abiserver.appslibrary.stub.AppsLibraryStubImpl; import com.abiquo.abiserver.commands.stub.APIStubFactory; import com.abiquo.abiserver.commands.stub.DatacenterRepositoryResourceStub; import com.abiquo.abiserver.commands.stub.VirtualMachineTemplateResourceStub; import com.abiquo.abiserver.commands.stub.impl.DatacenterRepositoryResourceStubImpl; import com.abiquo.abiserver.commands.stub.impl.VirtualMachineTemplateResourceStubImpl; import com.abiquo.abiserver.pojo.authentication.UserSession; import com.abiquo.abiserver.pojo.result.BasicResult; import com.abiquo.abiserver.pojo.result.DataResult; import com.abiquo.abiserver.pojo.virtualimage.Category; import com.abiquo.abiserver.pojo.virtualimage.OVFPackageInstanceStatus; import com.abiquo.abiserver.pojo.virtualimage.OVFPackageList; import com.abiquo.abiserver.pojo.virtualimage.Repository; import com.abiquo.abiserver.pojo.virtualimage.VirtualImage; import com.abiquo.server.core.appslibrary.CategoryDto; public class AppsLibraryService { public AppsLibraryService() { } public DataResult<Repository> getDatacenterRepository(final UserSession userSession, final Integer idDatacenter, final Integer idEnterprise, final Boolean refresh, final Boolean includeUsage) { DatacenterRepositoryResourceStub dcRepoStub = APIStubFactory.getInstance(userSession, new DatacenterRepositoryResourceStubImpl(), DatacenterRepositoryResourceStub.class); // refresh content and get return dcRepoStub.getRepository(idDatacenter, idEnterprise, refresh, includeUsage); } /** Virtual images */ /** * @param idRepo, if 0, indicate stateful images * @param idCategory, if 0 indicate return all the categories */ public DataResult<List<VirtualImage>> getVirtualImageByCategoryAndHypervisorCompatible( final UserSession userSession, final Integer idEnterprise, final Integer idRepo, final String categoryName, final String hypervisorTypeName, final Integer idDatacenter, final Integer idVirtualDatacenter) { final VirtualMachineTemplateResourceStub vimageStub = APIStubFactory.getInstance(userSession, new VirtualMachineTemplateResourceStubImpl(), VirtualMachineTemplateResourceStub.class); // idRepo == 0 --> stateful final Boolean includeStateful = idRepo == null || idRepo == 0; DataResult<List<VirtualImage>> listImages = vimageStub.getVirtualMachineTemplateByCategoryAndHypervisorCompatible(idEnterprise, idDatacenter, idVirtualDatacenter, categoryName, hypervisorTypeName, includeStateful); return fixVirtaulImageRepositroyAndEnterprise(listImages, idEnterprise, idRepo); } /** * @param idRepo, if 0, indicate stateful images * @param idCategory, if 0 indicate return all the categories */ public DataResult<List<VirtualImage>> getVirtualImageByCategory(final UserSession userSession, final Integer idEnterprise, final Integer idRepo, final String categoryName, final Integer idDatacenter) { final VirtualMachineTemplateResourceStub vimageStub = APIStubFactory.getInstance(userSession, new VirtualMachineTemplateResourceStubImpl(), VirtualMachineTemplateResourceStub.class); // idRepo == 0 --> stateful final Integer datacenterId = idRepo == 0 ? null : idDatacenter; DataResult<List<VirtualImage>> listImages = vimageStub .getVirtualMachineTemplateByCategory(idEnterprise, datacenterId, categoryName); return fixVirtaulImageRepositroyAndEnterprise(listImages, idEnterprise, idRepo); } private DataResult<List<VirtualImage>> fixVirtaulImageRepositroyAndEnterprise( final DataResult<List<VirtualImage>> images, final Integer idEnterprise, final Integer idRepository) { for (VirtualImage vimage : images.getData()) { vimage.setIdEnterprise(idEnterprise); vimage.getRepository().setId(idRepository); } return images; } /** List. */ public DataResult<List<String>> getOVFPackageListName(final UserSession userSession, final Integer idEnterprise) { return proxyStub(userSession).getTemplateDefinitionListNames(idEnterprise); } public DataResult<OVFPackageList> getOVFPackageList(final UserSession userSession, final Integer idEnterprise, final String nameOVFPackageList) { return proxyStub(userSession).getTemplateDefinitionList(idEnterprise, nameOVFPackageList); } public DataResult<OVFPackageList> createOVFPackageList(final UserSession userSession, final Integer idEnterprise, final String ovfpackageListURL) { return proxyStub(userSession).createTemplateDefinitionListFromOVFIndexUrl(idEnterprise, ovfpackageListURL); } public DataResult<OVFPackageList> refreshOVFPackageList(final UserSession userSession, final Integer idEnterprise, final String nameOvfpackageList) { return proxyStub(userSession).refreshTemplateDefinitionListFromRepository(idEnterprise, nameOvfpackageList); } public BasicResult deleteOVFPackageList(final UserSession userSession, final Integer idEnterprise, final String nameOvfpackageList) { return proxyStub(userSession) .deleteTemplateDefinitionList(idEnterprise, nameOvfpackageList); } /** DC specific status. */ public DataResult<List<OVFPackageInstanceStatus>> getOVFPackageListStatus( final UserSession userSession, final String nameOVFPackageList, final Integer idEnterprise, final Integer idDatacenter) { return proxyStub(userSession).getTemplatesState(nameOVFPackageList, idEnterprise, idDatacenter); } public DataResult<List<OVFPackageInstanceStatus>> refreshOVFPackageStatus( final UserSession userSession, final List<String> ovfUrlsIn, final Integer idEnterprise, final Integer idDatacenter) { final List<String> ovfUrls = ovfUrlsIn; // XXX cast to arraylist return proxyStub(userSession).getTemplatesState(ovfUrls, idEnterprise, idDatacenter); } public DataResult<OVFPackageInstanceStatus> refreshOVFPackageInstanceStatus( final UserSession userSession, final String ovfUrl, final Integer idEnterprise, final Integer idDatacenter) { return proxyStub(userSession).getTemplateState(ovfUrl, idEnterprise, idDatacenter); } public BasicResult startDownloadOVFPackage(final UserSession userSession, final List<String> idsOvfpackageIn, final Integer idEnterprise, final Integer idDatacenter) { final List<String> ovfUrls = idsOvfpackageIn; // XXX cast to arraylist return proxyStub(userSession).installTemplateDefinitionsInDatacenter(ovfUrls, idEnterprise, idDatacenter); } public DataResult<OVFPackageInstanceStatus> cancelDownloadOVFPackage( final UserSession userSession, final String ovfUrl, final Integer idEnterprise, final Integer idDatacenter) { return proxyStub(userSession).uninstallTemplateDefinitionInDatacenter(ovfUrl, idEnterprise, idDatacenter); } /** * ################################# ################################# */ /** * TODO user Format, Icon and Category ResourceStub */ /** * ################################# ################################# */ public DataResult<List<com.abiquo.abiserver.pojo.virtualimage.DiskFormatType>> getDiskFormatTypes( final UserSession userSession) { return proxyStub(userSession).getDiskFormatTypes(); } // todo con idRepo /** Icon */ public DataResult<List<String>> getIcons(final UserSession userSession, final Integer idEnterprise) { return proxyStub(userSession).getIcons(idEnterprise); } /** * ################################# ################################# */ /** * TODO user VirtualImageResourceStub */ /** * ################################# ################################# */ public BasicResult editVirtualImage(final UserSession userSession, final Integer idEnterprise, final Integer idDatacenter, final VirtualImage vimage) { final VirtualMachineTemplateResourceStub vimageStub = APIStubFactory.getInstance(userSession, new VirtualMachineTemplateResourceStubImpl(), VirtualMachineTemplateResourceStub.class); return vimageStub.editVirtualImage(idEnterprise, idDatacenter, vimage); } public BasicResult deleteVirtualImage(final UserSession userSession, final Integer idEnterprise, final Integer idDatacenter, final Integer idVirtualImage) { final VirtualMachineTemplateResourceStub vimageStub = APIStubFactory.getInstance(userSession, new VirtualMachineTemplateResourceStubImpl(), VirtualMachineTemplateResourceStub.class); return vimageStub.deleteVirtualMachineTemplate(idEnterprise, idDatacenter, idVirtualImage); } /** * The Stub we will use to connect to API */ protected AppsLibraryStub proxyStub(final UserSession userSession) { return APIStubFactory.getInstance(userSession, new AppsLibraryStubImpl(), AppsLibraryStub.class); } /** * CATEGORY */ public DataResult<List<Category>> getCategories(final UserSession userSession, final Integer idEnterprise) { return proxyStub(userSession).getCategories(idEnterprise); } public DataResult<Category> createCategory(final UserSession userSession, final String categoryName, final Integer idEnterprise) { CategoryDto categoryDto = new CategoryDto(); categoryDto.setName(categoryName); categoryDto.setDefaultCategory(false); categoryDto.setErasable(true); return proxyStub(userSession).createCategory(categoryDto, idEnterprise); } public BasicResult deleteCategory(final UserSession userSession, final Integer idCategory) { return proxyStub(userSession).deleteCategory(idCategory); } public BasicResult getAllowedDataCenters(final UserSession session, final Integer effectiveEnterpriseId) { DatacenterRepositoryResourceStub dcRepoStub = APIStubFactory.getInstance(session, new DatacenterRepositoryResourceStubImpl(), DatacenterRepositoryResourceStub.class); return dcRepoStub.getAllowedRepositories(effectiveEnterpriseId); } }