diff options
Diffstat (limited to 'dozentenmodulserver/src/main/java/org/openslx/bwlp/sat/database/mappers/DbImage.java')
-rw-r--r-- | dozentenmodulserver/src/main/java/org/openslx/bwlp/sat/database/mappers/DbImage.java | 67 |
1 files changed, 45 insertions, 22 deletions
diff --git a/dozentenmodulserver/src/main/java/org/openslx/bwlp/sat/database/mappers/DbImage.java b/dozentenmodulserver/src/main/java/org/openslx/bwlp/sat/database/mappers/DbImage.java index bac3ad6c..9c39078c 100644 --- a/dozentenmodulserver/src/main/java/org/openslx/bwlp/sat/database/mappers/DbImage.java +++ b/dozentenmodulserver/src/main/java/org/openslx/bwlp/sat/database/mappers/DbImage.java @@ -1,14 +1,6 @@ package org.openslx.bwlp.sat.database.mappers; -import java.io.*; -import java.sql.ResultSet; -import java.sql.SQLException; -import java.util.ArrayList; -import java.util.HashSet; -import java.util.List; -import java.util.Set; -import java.util.UUID; - +import com.google.gson.JsonObject; import org.apache.log4j.Logger; import org.openslx.bwlp.sat.RuntimeConfig; import org.openslx.bwlp.sat.database.Database; @@ -20,27 +12,20 @@ import org.openslx.bwlp.sat.database.models.LocalImageVersion; import org.openslx.bwlp.sat.mail.MailGenerator; import org.openslx.bwlp.sat.permissions.User; import org.openslx.bwlp.sat.util.FileSystem; -import org.openslx.bwlp.thrift.iface.ImageBaseWrite; -import org.openslx.bwlp.thrift.iface.ImageDetailsRead; -import org.openslx.bwlp.thrift.iface.ImagePermissions; -import org.openslx.bwlp.thrift.iface.ImagePublishData; -import org.openslx.bwlp.thrift.iface.ImageSummaryRead; -import org.openslx.bwlp.thrift.iface.ImageVersionDetails; -import org.openslx.bwlp.thrift.iface.ImageVersionWrite; -import org.openslx.bwlp.thrift.iface.Role; -import org.openslx.bwlp.thrift.iface.ShareMode; -import org.openslx.bwlp.thrift.iface.TNotFoundException; -import org.openslx.bwlp.thrift.iface.UserInfo; +import org.openslx.bwlp.thrift.iface.*; import org.openslx.filetransfer.util.ChunkList; import org.openslx.filetransfer.util.FileChunk; import org.openslx.util.QuickTimer; import org.openslx.util.QuickTimer.Task; import org.openslx.util.Util; - -// master-sync-shared import org.openslx.virtualization.configuration.container.ContainerDefinition; import org.openslx.virtualization.configuration.container.ContainerMeta; +import java.io.File; +import java.sql.ResultSet; +import java.sql.SQLException; +import java.util.*; + public class DbImage { private static final Logger LOGGER = Logger.getLogger(DbImage.class); @@ -1162,6 +1147,44 @@ public class DbImage { } } + public static String getContainerImageMetadata(String imagebaseid) throws SQLException { + + try (MysqlConnection connection = Database.getConnection()) { + MysqlStatement stmt = connection.prepareStatement( + "SELECT ib.imagebaseid, ib.displayname, iv.filepath, iv.filesize, iv.virtualizerconfig" + + " FROM imagebase AS ib" + + " JOIN imageversion AS iv ON (ib.latestversionid=iv.imageversionid AND ib.virtid = 'docker' AND ib.latestversionid IS NOT NULL)" + + " WHERE ib.imagebaseid = :imagebaseid"); + stmt.setString("imagebaseid", imagebaseid); + ResultSet rs = stmt.executeQuery(); + + JsonObject resultJson = new JsonObject(); + while (rs.next()) { + ContainerDefinition condev = ContainerDefinition.fromByteArray( + rs.getBytes("iv.virtualizerconfig")); + // currently only data images are returned + if (condev.getContainerMeta().getImageType() != ContainerMeta.ContainerImageType.DATA) + break; + + resultJson.addProperty("displayname", rs.getString("ib.displayname")); + resultJson.addProperty("imagepath", rs.getString("iv.filepath")); + resultJson.addProperty("filesize", rs.getString("iv.filesize")); + + resultJson.addProperty("image_recipe", condev.getContainerRecipe()); + resultJson.addProperty("image_repo", condev.getContainerMeta().getImageRepo()); + resultJson.addProperty("build_context_method", + condev.getContainerMeta().getContainerImageContext()); + resultJson.addProperty("build_context_url", condev.getContainerMeta().getBuildContextUrl()); + break; + } + + return resultJson.toString(); + } catch (Exception e) { + LOGGER.error("Query failed in DbImage.getContainerImages()", e); + throw e; + } + } + static class ContainerImages { public final String owner_firstname; public final String owner_lastname; |