From 893773c868635b7d0654a4a56937e42306dc146b Mon Sep 17 00:00:00 2001 From: Fabricio Duarte Date: Mon, 10 Jun 2024 10:56:31 -0300 Subject: [PATCH 1/2] Framework for validating links in the front-end --- .../apache/cloudstack/api/ApiConstants.java | 1 + .../api/response/SnapshotResponse.java | 8 +++++ .../META-INF/db/views/cloud.snapshot_view.sql | 1 + .../java/com/cloud/api/ApiResponseHelper.java | 1 + .../api/query/dao/SnapshotJoinDaoImpl.java | 1 + .../cloud/api/query/vo/SnapshotJoinVO.java | 8 +++++ ui/src/components/view/InfoCard.vue | 8 +++-- ui/src/components/view/ListView.vue | 16 ++++++++- ui/src/utils/links.js | 36 +++++++++++++++++++ 9 files changed, 77 insertions(+), 3 deletions(-) create mode 100644 ui/src/utils/links.js diff --git a/api/src/main/java/org/apache/cloudstack/api/ApiConstants.java b/api/src/main/java/org/apache/cloudstack/api/ApiConstants.java index f5561a01191b..9c5d03546b8e 100644 --- a/api/src/main/java/org/apache/cloudstack/api/ApiConstants.java +++ b/api/src/main/java/org/apache/cloudstack/api/ApiConstants.java @@ -573,6 +573,7 @@ public class ApiConstants { public static final String AGGREGATE_NAME = "aggregatename"; public static final String POOL_NAME = "poolname"; public static final String VOLUME_NAME = "volumename"; + public static final String VOLUME_STATE = "volumestate"; public static final String SNAPSHOT_POLICY = "snapshotpolicy"; public static final String SNAPSHOT_RESERVATION = "snapshotreservation"; public static final String IP_NETWORK_LIST = "iptonetworklist"; diff --git a/api/src/main/java/org/apache/cloudstack/api/response/SnapshotResponse.java b/api/src/main/java/org/apache/cloudstack/api/response/SnapshotResponse.java index e160f64ebe91..02132416b8a7 100644 --- a/api/src/main/java/org/apache/cloudstack/api/response/SnapshotResponse.java +++ b/api/src/main/java/org/apache/cloudstack/api/response/SnapshotResponse.java @@ -71,6 +71,10 @@ public class SnapshotResponse extends BaseResponseWithTagInformation implements @Param(description = "type of the disk volume") private String volumeType; + @SerializedName(ApiConstants.VOLUME_STATE) + @Param(description = "state of the disk volume") + private String volumeState; + @SerializedName(ApiConstants.CREATED) @Param(description = " the date the snapshot was created") private Date created; @@ -199,6 +203,10 @@ public void setVolumeType(String volumeType) { this.volumeType = volumeType; } + public void setVolumeState(String volumeState) { + this.volumeState = volumeState; + } + public void setCreated(Date created) { this.created = created; } diff --git a/engine/schema/src/main/resources/META-INF/db/views/cloud.snapshot_view.sql b/engine/schema/src/main/resources/META-INF/db/views/cloud.snapshot_view.sql index c6b8d6b4d05e..d0eddc1fc4b3 100644 --- a/engine/schema/src/main/resources/META-INF/db/views/cloud.snapshot_view.sql +++ b/engine/schema/src/main/resources/META-INF/db/views/cloud.snapshot_view.sql @@ -48,6 +48,7 @@ SELECT `volumes`.`uuid` AS `volume_uuid`, `volumes`.`name` AS `volume_name`, `volumes`.`volume_type` AS `volume_type`, + `volumes`.`state` AS `volume_state`, `volumes`.`size` AS `volume_size`, `data_center`.`id` AS `data_center_id`, `data_center`.`uuid` AS `data_center_uuid`, diff --git a/server/src/main/java/com/cloud/api/ApiResponseHelper.java b/server/src/main/java/com/cloud/api/ApiResponseHelper.java index b49a278de5b9..b58103546dfd 100644 --- a/server/src/main/java/com/cloud/api/ApiResponseHelper.java +++ b/server/src/main/java/com/cloud/api/ApiResponseHelper.java @@ -659,6 +659,7 @@ public SnapshotResponse createSnapshotResponse(Snapshot snapshot) { snapshotResponse.setVolumeId(volume.getUuid()); snapshotResponse.setVolumeName(volume.getName()); snapshotResponse.setVolumeType(volume.getVolumeType().name()); + snapshotResponse.setVolumeState(volume.getState().name()); snapshotResponse.setVirtualSize(volume.getSize()); DataCenter zone = ApiDBUtils.findZoneById(volume.getDataCenterId()); if (zone != null) { diff --git a/server/src/main/java/com/cloud/api/query/dao/SnapshotJoinDaoImpl.java b/server/src/main/java/com/cloud/api/query/dao/SnapshotJoinDaoImpl.java index b08fb4529f4a..8b951c174f48 100644 --- a/server/src/main/java/com/cloud/api/query/dao/SnapshotJoinDaoImpl.java +++ b/server/src/main/java/com/cloud/api/query/dao/SnapshotJoinDaoImpl.java @@ -128,6 +128,7 @@ public SnapshotResponse newSnapshotResponse(ResponseObject.ResponseView view, bo snapshotResponse.setVolumeId(snapshot.getVolumeUuid()); snapshotResponse.setVolumeName(snapshot.getVolumeName()); snapshotResponse.setVolumeType(snapshot.getVolumeType().name()); + snapshotResponse.setVolumeState(snapshot.getVolumeState().name()); snapshotResponse.setVirtualSize(snapshot.getVolumeSize()); VolumeVO volume = ApiDBUtils.findVolumeById(snapshot.getVolumeId()); if (volume != null && volume.getVolumeType() == Type.ROOT && volume.getInstanceId() != null) { diff --git a/server/src/main/java/com/cloud/api/query/vo/SnapshotJoinVO.java b/server/src/main/java/com/cloud/api/query/vo/SnapshotJoinVO.java index 9ec74dac1288..2dc2f7a810f5 100644 --- a/server/src/main/java/com/cloud/api/query/vo/SnapshotJoinVO.java +++ b/server/src/main/java/com/cloud/api/query/vo/SnapshotJoinVO.java @@ -130,6 +130,10 @@ public class SnapshotJoinVO extends BaseViewWithTagInformationVO implements Cont @Enumerated(EnumType.STRING) Volume.Type volumeType = Volume.Type.UNKNOWN; + @Column(name = "volume_state") + @Enumerated(EnumType.STRING) + Volume.State volumeState; + @Column(name = "volume_size") Long volumeSize; @@ -297,6 +301,10 @@ public Volume.Type getVolumeType() { return volumeType; } + public Volume.State getVolumeState() { + return volumeState; + } + public Long getVolumeSize() { return volumeSize; } diff --git a/ui/src/components/view/InfoCard.vue b/ui/src/components/view/InfoCard.vue index a4fa1191d137..99f52cf5a37f 100644 --- a/ui/src/components/view/InfoCard.vue +++ b/ui/src/components/view/InfoCard.vue @@ -454,7 +454,8 @@
{{ $t('label.volume') }}
- {{ resource.volumename || resource.volume || resource.volumeid }} + {{ resource.volumename || resource.volume || resource.volumeid }} + {{ resource.volumename || resource.volume || resource.volumeid }}
@@ -794,6 +795,7 @@