package alien4cloud.utils.services; import java.io.IOException; import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; import javax.annotation.Resource; import org.alien4cloud.tosca.catalog.ArchiveParser; import org.alien4cloud.tosca.model.templates.Topology; import org.springframework.stereotype.Component; import alien4cloud.common.AlienConstants; import alien4cloud.tosca.model.ArchiveRoot; import alien4cloud.tosca.parser.ParsingException; import alien4cloud.tosca.parser.ParsingResult; import alien4cloud.utils.FileUtil; import lombok.SneakyThrows; import lombok.extern.slf4j.Slf4j; @Component @Slf4j public class ApplicationUtil { @Resource private ArchiveParser parser; @SneakyThrows public Topology parseYamlTopology(String topologyPath) throws IOException, ParsingException { Path zipPath = Files.createTempFile("csar", ".zip"); FileUtil.zip(Paths.get(topologyPath + ".yml"), zipPath); ParsingResult<ArchiveRoot> parsingResult = parser.parse(zipPath, AlienConstants.GLOBAL_WORKSPACE_ID); return parsingResult.getResult().getTopology(); } }