diff --git a/src/main/java/net/lamgc/oracle/sentry/oci/compute/BootImage.java b/src/main/java/net/lamgc/oracle/sentry/oci/compute/BootImage.java new file mode 100644 index 0000000..76ac61d --- /dev/null +++ b/src/main/java/net/lamgc/oracle/sentry/oci/compute/BootImage.java @@ -0,0 +1,90 @@ +package net.lamgc.oracle.sentry.oci.compute; + +import com.oracle.bmc.core.model.Image; + +import java.util.Date; + +/** + * 引导镜像. + *

创建实例时所指定的引导镜像. + *

如果实例经过其他方式重新安装了系统, 则本信息有偏差. + * @author LamGC + */ +public final class BootImage { + + private final Image image; + + BootImage(Image image) { + this.image = image; + } + + /** + * 获取镜像 Id. + *

该 Id 可在创建服务器时指定所使用的系统镜像. + * @return 返回镜像在 Oracle 的 Id. + */ + public String getImageId() { + return image.getId(); + } + + /** + * 获取镜像所在的区域 Id. + * @return 返回镜像所在区域的 Id. + */ + public String getCompartmentId() { + return image.getCompartmentId(); + } + + /** + * 获取镜像系统名称. + *

比如 Ubuntu 或者说 CentOS. + * @return 返回系统名称(不是计算机名称). + */ + public String getOS() { + return image.getOperatingSystem(); + } + + /** + * 获取该镜像基于某一镜像的 Id. + *

Oracle 提供了方法, 可以通过当前服务器生成新的镜像, + * 生成后, 新的镜像就是基于原镜像生成, 该项就不为空. + * @return 如果存在, 返回基础镜像 Id, 无基础镜像则返回 {@code null}. + */ + public String getBaseImageId() { + return image.getBaseImageId(); + } + + /** + * 镜像的显示名称. + *

获取镜像显示名, 该名称与该镜像系统在官方为 iso 的命名差不多. + * @return 获取镜像的显示名称. + */ + public String getName() { + return image.getDisplayName(); + } + + /** + * 获取镜像大小. + * @return 返回镜像大小, 单位为 MiB. + */ + public Long getSize() { + return image.getSizeInMBs(); + } + + /** + * 获取系统版本号. + * @return 返回镜像内系统的版本号, 如果版本较旧且服务器更新过系统, 则版本号不是最新的. + */ + public String getOSVersion() { + return image.getOperatingSystemVersion(); + } + + /** + * 获取镜像创建时间. + * @return 获取镜像创建时间. + */ + public Date getTimeCreated() { + return image.getTimeCreated(); + } + +} diff --git a/src/main/java/net/lamgc/oracle/sentry/oci/compute/ComputeInstance.java b/src/main/java/net/lamgc/oracle/sentry/oci/compute/ComputeInstance.java index 1628459..1371bfc 100644 --- a/src/main/java/net/lamgc/oracle/sentry/oci/compute/ComputeInstance.java +++ b/src/main/java/net/lamgc/oracle/sentry/oci/compute/ComputeInstance.java @@ -2,7 +2,6 @@ package net.lamgc.oracle.sentry.oci.compute; import com.oracle.bmc.auth.AuthenticationDetailsProvider; import com.oracle.bmc.core.ComputeClient; -import com.oracle.bmc.core.model.Image; import com.oracle.bmc.core.model.Instance; import com.oracle.bmc.core.requests.GetImageRequest; import com.oracle.bmc.core.requests.GetInstanceRequest; @@ -58,21 +57,17 @@ public final class ComputeInstance { return compartmentId; } - public String getImageId() { - return imageId; - } - /** * 获取并返回实例镜像信息. *

可获取系统信息. *

如果实例被 dd, 则本信息不准确. * @return 返回实例信息. */ - public Image getImage() { + public BootImage getImage() { GetImageResponse image = computeClient.getImage(GetImageRequest.builder() .imageId(imageId) .build()); - return image.getImage(); + return new BootImage(image.getImage()); } /**