镜像
更新时间:2020-06-29
创建自定义镜像
支持通过实例创建和通过快照创建两种方式。参考以下代码可以创建一个自定义镜像:
// 通过实例创建自定义镜像
public static void createImageFromInstance(BccClient bccClient, String imageName, String instanceId) {
CreateImageRequest createImageRequest = new CreateImageRequest();
// 设置自定义镜像名称
createImageRequest.setImageName(imageName);
// 设置BCC实例id
createImageRequest.setInstanceId(instanceId);
System.out.println(bccClient.createImage(createImageRequest).getImageId());
}
// 通过实例创建自定义镜像,并且设置是否关联实例CDS磁盘
public static void createImageFromInstanceWithRelateCds(BccClient bccClient, String imageName, String instanceId, boolean relateCds) {
CreateImageRequest createImageRequest = new CreateImageRequest();
// 设置自定义镜像名称
createImageRequest.setImageName(imageName);
// 设置BCC实例id
createImageRequest.setInstanceId(instanceId);
// 设置自定义镜像是否关联实例CDS磁盘,relateCds默认为false,为true时表示关联
createImageRequest.setRelateCds(relateCds);
System.out.println(bccClient.createImage(createImageRequest).getImageId());
}
// 通过快照创建自定义镜像
public static void createImageFromSnapshot(BccClient bccClient, String imageName, String snapshotId) {
CreateImageRequest createImageRequest = new CreateImageRequest();
// 设置自定义镜像名称
createImageRequest.setImageName(imageName);
// 设置快照id
createImageRequest.setSnapshotId(snapshotId);
System.out.println(bccClient.createImage(createImageRequest).getImageId());
}
注意,创建自定义镜像,默认配额20个每账号。
查询镜像列表
使用以下代码可以查询有权限的镜像列表:
public static void listImage(BccClient bccClient, String imageType) {
ListImagesRequest listImagesRequest = new ListImagesRequest();
// 设置分页标志
listImagesRequest.setMarker(imageId);
// 设置分页返回数据大小
listImagesRequest.setMaxKeys(maxKey);
// 设置筛选的镜像类型
listImagesRequest.setImageType(imageType);
ListImagesResponse listImagesResponse = bccClient.listImages();
for (ImageModel imageModel : listImagesResponse.getImages()) {
System.out.println(imageModel.getId());
}
}
具体的镜像类型可详细参考BCC API文档查询镜像列表
查询镜像详情
以下代码可以查询镜像详细信息:
public static void getImage(BccClient bccClient, String imageId) {
GetImageResponse getImageResponse = bccClient.getImage(imageId);
System.out.println(getImageResponse.getImage().getName());
}
删除自定义镜像
以下代码可以删除一个自定义镜像:
public static void deleteImage(BccClient bccClient, String imageId) {
bccClient.deleteImage(imageId);
}
跨区域复制自定义镜像
用于用户跨区域复制自定义镜像,仅限自定义镜像,系统镜像和服务集成镜像不能复制
regions如北京"bj",广州"gz",苏州"su",可多选:
public static void remoteCopyImage(BccClient bccClient, String destImageId, String imageName, ArrayList<String> regions) {
RemoteCopyImageRequest remoteCopyImageRequest = new RemoteCopyImageRequest();
// 被复制镜像ID
remoteCopyImageRequest.setImageId(destImageId);
//设置镜像名称
remoteCopyImageRequest.setname(imageName);
// 目的regionId
remoteCopyImageRequest.setDestRegion(regions);
bccClient.remoteCopyImage(remoteCopyImageRequest);
}
取消跨区域复制自定义镜像
用于取消跨区域复制自定义镜像,仅限自定义镜像,系统镜像和服务集成镜像不能复制:
public static void cancelRemoteCopyImage(BccClient bccClient, String imageId) {
// 待取消复制的镜像ID
bccClient.cancelRemoteCopyImage(destImageId);
}
共享自定义镜像
用于共享用户自己的指定的自定义镜像,仅限自定义镜像,系统镜像和服务集成镜像不能共享:
public static void shareImage(BccClient bccClient, String accountId, String imageId) {
ShareImageRequest shareImageRequest = new ShareImageRequest();
// 待共享的用户ID
shareImageRequest.setAccountId(accountId);
// 待共享镜像ID
shareImageRequest.setImageId(imageId);
bccClient.shareImage(shareImageRequest);
}
取消共享自定义镜像
用于取消共享用户自己的指定的自定义镜像:
public static void unShareImage(BccClient bccClient, String accountId, String imageId) {
UnShareImageRequest unShareImageRequest = new UnShareImageRequest();
// 待取消共享用户ID
unShareImageRequest.setAccountId(accountId);
// 待取消共享镜像ID
unShareImageRequest.setImageId(imageId);
bccClient.unShareImage(unShareImageRequest);
}
查询镜像已共享用户列表
用于查询镜像已共享的用户列表:
public static void listSharedUser(BccClient bccClient, String ImageId) {
ListSharedUserResponse listSharedUserResponse = bccClient.listSharedUser(ImageId);
}
根据实例短ID批量查询OS信息(新增)
用于根据实例短id批量查询OS信息:
public static void listOs(BccClient bccClient) {
ListOsRequest listOsRequest = new ListOsRequest();
List<String> ids = new ArrayList<String>();
//设置需要查询的实例ID
ids.add(instanceId);
listOsRequest.setInstanceIds(ids);
ListOsResponse listOsResponse = bccClient.listOs(listOsRequest);
}