package org.opentosca.csarrepo.service; import java.net.URISyntaxException; import java.net.URL; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import org.opentosca.csarrepo.exception.DeploymentException; import org.opentosca.csarrepo.exception.PersistenceException; import org.opentosca.csarrepo.model.CsarFile; import org.opentosca.csarrepo.model.OpenToscaServer; import org.opentosca.csarrepo.model.join.CsarFileOpenToscaServer; import org.opentosca.csarrepo.model.repository.CsarFileRepository; import org.opentosca.csarrepo.model.repository.JoinRepository; import org.opentosca.csarrepo.model.repository.OpenToscaServerRepository; import org.opentosca.csarrepo.util.ContainerApiClient; public class UndeployCsarFileOpenToscaService extends AbstractService { private boolean success = false; private static final Logger LOGGER = LogManager.getLogger(UndeployCsarFileOpenToscaService.class); public UndeployCsarFileOpenToscaService(long userId, long openToscaId, long csarFileId) { super(userId); OpenToscaServerRepository openToscaServerRepository = new OpenToscaServerRepository(); CsarFileRepository csarFileRepo = new CsarFileRepository(); OpenToscaServer openToscaServer; CsarFile csarFile; try { openToscaServer = openToscaServerRepository.getbyId(openToscaId); csarFile = csarFileRepo.getbyId(csarFileId); } catch (PersistenceException e) { this.addError("Couldn't determine required parameters " + e.getMessage()); return; } try { URL address = openToscaServer.getAddress(); // TODO: check if it would be better to save address as URI in // general ContainerApiClient containerApiClient = new ContainerApiClient(openToscaServer); JoinRepository joinRepo = new JoinRepository(); CsarFileOpenToscaServer mapping = joinRepo.getCsarFileOpenToscaServer(csarFile, openToscaServer); containerApiClient.deleteCsarAtLocation(mapping.getLocation()); // update meta-data csarFile.removeOpenToscaServer(openToscaServer); success = true; } catch (URISyntaxException | PersistenceException | DeploymentException e) { this.addError(e.getMessage()); return; } } public boolean getResult() { this.logInvalidResultAccess("getResult"); return this.success; } }