refactor: 包装 Image 对象.

包装 Image 对象以简化脚本对 Image 的访问.
This commit is contained in:
LamGC 2021-08-19 19:19:11 +08:00
parent 499c3d283c
commit 4dd6a9b695
Signed by: LamGC
GPG Key ID: 6C5AE2A913941E1D
2 changed files with 92 additions and 7 deletions

View File

@ -0,0 +1,90 @@
package net.lamgc.oracle.sentry.oci.compute;
import com.oracle.bmc.core.model.Image;
import java.util.Date;
/**
* 引导镜像.
* <p> 创建实例时所指定的引导镜像.
* <p> 如果实例经过其他方式重新安装了系统, 则本信息有偏差.
* @author LamGC
*/
public final class BootImage {
private final Image image;
BootImage(Image image) {
this.image = image;
}
/**
* 获取镜像 Id.
* <p> Id 可在创建服务器时指定所使用的系统镜像.
* @return 返回镜像在 Oracle Id.
*/
public String getImageId() {
return image.getId();
}
/**
* 获取镜像所在的区域 Id.
* @return 返回镜像所在区域的 Id.
*/
public String getCompartmentId() {
return image.getCompartmentId();
}
/**
* 获取镜像系统名称.
* <p> 比如 Ubuntu 或者说 CentOS.
* @return 返回系统名称(不是计算机名称).
*/
public String getOS() {
return image.getOperatingSystem();
}
/**
* 获取该镜像基于某一镜像的 Id.
* <p> Oracle 提供了方法, 可以通过当前服务器生成新的镜像,
* 生成后, 新的镜像就是基于原镜像生成, 该项就不为空.
* @return 如果存在, 返回基础镜像 Id, 无基础镜像则返回 {@code null}.
*/
public String getBaseImageId() {
return image.getBaseImageId();
}
/**
* 镜像的显示名称.
* <p> 获取镜像显示名, 该名称与该镜像系统在官方为 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();
}
}

View File

@ -2,7 +2,6 @@ package net.lamgc.oracle.sentry.oci.compute;
import com.oracle.bmc.auth.AuthenticationDetailsProvider; import com.oracle.bmc.auth.AuthenticationDetailsProvider;
import com.oracle.bmc.core.ComputeClient; 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.model.Instance;
import com.oracle.bmc.core.requests.GetImageRequest; import com.oracle.bmc.core.requests.GetImageRequest;
import com.oracle.bmc.core.requests.GetInstanceRequest; import com.oracle.bmc.core.requests.GetInstanceRequest;
@ -58,21 +57,17 @@ public final class ComputeInstance {
return compartmentId; return compartmentId;
} }
public String getImageId() {
return imageId;
}
/** /**
* 获取并返回实例镜像信息. * 获取并返回实例镜像信息.
* <p> 可获取系统信息. * <p> 可获取系统信息.
* <p> 如果实例被 dd, 则本信息不准确. * <p> 如果实例被 dd, 则本信息不准确.
* @return 返回实例信息. * @return 返回实例信息.
*/ */
public Image getImage() { public BootImage getImage() {
GetImageResponse image = computeClient.getImage(GetImageRequest.builder() GetImageResponse image = computeClient.getImage(GetImageRequest.builder()
.imageId(imageId) .imageId(imageId)
.build()); .build());
return image.getImage(); return new BootImage(image.getImage());
} }
/** /**