diff options
Diffstat (limited to 'src/main/java/org/openslx/virtualization/configuration/container/ContainerMeta.java')
-rw-r--r-- | src/main/java/org/openslx/virtualization/configuration/container/ContainerMeta.java | 166 |
1 files changed, 166 insertions, 0 deletions
diff --git a/src/main/java/org/openslx/virtualization/configuration/container/ContainerMeta.java b/src/main/java/org/openslx/virtualization/configuration/container/ContainerMeta.java new file mode 100644 index 0000000..4dbf64b --- /dev/null +++ b/src/main/java/org/openslx/virtualization/configuration/container/ContainerMeta.java @@ -0,0 +1,166 @@ +package org.openslx.virtualization.configuration.container; + +import java.util.ArrayList; +import java.util.List; +import java.util.Objects; + +/** + * ContainerMeta is used to store container specific information. An object of + * this class will be serialized with gson to a json file. + * <p> + * TODO rename build_context_method to container_image_context, requires update + * in database(json) + * <p> + * TODO rename build_context_url to build_context TODO refactoring build_context + * is either a dockerfile or a git url with a dockerfile. + */ +public class ContainerMeta { + + private int build_context_method; + private String image_repo; + private String build_context_url; + private String image_name; + private String run_options; + private String run_command; + private String image_type; + private List<ContainerBindMount> bind_mount_config = new ArrayList<>(); + + public ContainerMeta() { + + image_repo = ""; + build_context_method = ContainerImageContext.DOCKERFILE.ordinal(); + build_context_url = ""; + image_name = ""; + run_options = ""; + run_command = ""; + image_type = ContainerImageType.LECTURE.toString(); + bind_mount_config = new ArrayList<>(); + } + + public ContainerMeta(ContainerMeta containerMeta) { + build_context_method = containerMeta.build_context_method; + build_context_url = containerMeta.build_context_url; + image_name = containerMeta.image_name; + run_options = containerMeta.run_options; + run_command = containerMeta.run_command; + image_repo = containerMeta.image_repo; + + for (ContainerBindMount bm : containerMeta.bind_mount_config) + bind_mount_config.add(new ContainerBindMount(bm.getSource(), bm.getTarget(), bm.getOptions())); + + } + + public int getContainerImageContext() { + return build_context_method; + } + + public void setContainerImageContext(int buildContextMethod) { + this.build_context_method = buildContextMethod; + } + + public String getBuildContextUrl() { + return build_context_url; + } + + public void setBuildContextUrl(String buildContextUrl) { + this.build_context_url = buildContextUrl; + } + + public String getRunOptions() { + return run_options; + } + + public void setRunOptions(String run_options) { + this.run_options = run_options; + } + + public String getRunCommand() { + return this.run_command; + } + + public void setRunCommand(String run_command) { + this.run_command = run_command; + } + + public String getImageName() { + return image_name; + } + + public void setImageName(String image_name) { + this.image_name = image_name; + } + + public List<ContainerBindMount> getBindMountConfig() { + return bind_mount_config; + } + + public void setBindMountConfig(List<ContainerBindMount> bindMountConfig) { + this.bind_mount_config = bindMountConfig; + } + + public String getImageRepo() { + return image_repo; + } + + public void setImageRepo(String from_image) { + this.image_repo = from_image; + } + + public ContainerImageType getImageType() { + if (image_type == null || image_type.length() == 0) + return ContainerImageType.LECTURE; + + // turn string representation into enum-var 'LECTURE' -> + // ContainerImageType.LECTURE + return ContainerImageType.valueOf(image_type); + } + + public void setImageType(ContainerImageType image_type) { + // set constant representation of the enum-var e.g. ContainerImageType.LECTURE + // -> 'LECTURE' + this.image_type = image_type.name(); + } + + @Override + public boolean equals(Object o) { + if (this == o) + return true; + if (o == null || getClass() != o.getClass()) + return false; + ContainerMeta that = (ContainerMeta) o; + return Objects.equals(build_context_url, that.build_context_url) && Objects.equals(image_name, that.image_name) + && Objects.equals(run_options, that.run_options) && Objects.equals(run_command, that.run_command) + && Objects.equals(bind_mount_config, that.bind_mount_config) + && Objects.equals(image_repo, that.image_repo) && Objects.equals(image_type, that.image_type); + } + + @Override + public int hashCode() { + return Objects.hash(build_context_url, image_name, run_options, run_command, bind_mount_config, image_repo, + image_type); + } + + public enum ContainerImageType implements org.apache.thrift.TEnum { + LECTURE("Lecture"), BATCH("Batch"), DATA("Data"); + + private final String displayLable; + + ContainerImageType(String name) { + this.displayLable = name; + } + + public boolean equalNames(String other) { + return displayLable.equals(other); + } + + @Override + public String toString() { + return this.displayLable; + } + + @Override + public int getValue() { + return this.ordinal(); + } + } +} |