This is an automated email from the ASF dual-hosted git repository.

hello-stephen pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/doris.git


The following commit(s) were added to refs/heads/master by this push:
     new a9816faa665 [refactor](cloud) Rename cloud compute group metadata 
class (#65817)
a9816faa665 is described below

commit a9816faa6652362b4fc8fbbf057d62652e016624
Author: deardeng <[email protected]>
AuthorDate: Wed Jul 22 14:26:19 2026 +0800

    [refactor](cloud) Rename cloud compute group metadata class (#65817)
    
    Problem Summary: The FE cloud catalog metadata entity shared the
    ComputeGroup class name with the resource routing abstraction, making
    imports and usages ambiguous. Rename the cloud metadata entity to
    CloudComputeGroupMeta and update all production and unit-test references
    without changing runtime behavior or persisted metadata.
---
 .../doris/cloud/catalog/BalanceTypeEnum.java       |   3 +-
 ...omputeGroup.java => CloudComputeGroupMeta.java} |  28 ++++-
 .../cloud/catalog/CloudInstanceStatusChecker.java  |  30 ++---
 .../doris/cloud/catalog/CloudTabletRebalancer.java |  10 +-
 .../doris/cloud/system/CloudSystemInfoService.java |  43 +++----
 .../plans/commands/AlterComputeGroupCommand.java   |   4 +-
 .../trees/plans/commands/ShowClustersCommand.java  |   8 +-
 .../trees/plans/commands/WarmUpClusterCommand.java |   6 +-
 .../cloud/WarmUpClusterOnTablesParseTest.java      |  20 +--
 ...oupTest.java => CloudComputeGroupMetaTest.java} | 135 +++++++++++----------
 .../catalog/CloudInstanceStatusCheckerTest.java    |  10 +-
 .../cloud/system/CloudSystemInfoServiceTest.java   | 104 ++++++++--------
 .../doris/mysql/privilege/CloudAuthTest.java       |   8 +-
 .../commands/AlterComputeGroupCommandTest.java     |   8 +-
 14 files changed, 220 insertions(+), 197 deletions(-)

diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/cloud/catalog/BalanceTypeEnum.java 
b/fe/fe-core/src/main/java/org/apache/doris/cloud/catalog/BalanceTypeEnum.java
index d66e3126d5b..55dbfba1cc5 100644
--- 
a/fe/fe-core/src/main/java/org/apache/doris/cloud/catalog/BalanceTypeEnum.java
+++ 
b/fe/fe-core/src/main/java/org/apache/doris/cloud/catalog/BalanceTypeEnum.java
@@ -64,6 +64,7 @@ public enum BalanceTypeEnum {
      */
     public static BalanceTypeEnum getCloudWarmUpForRebalanceTypeEnum() {
         return fromString(Config.cloud_warm_up_for_rebalance_type) == null
-            ? ComputeGroup.DEFAULT_COMPUTE_GROUP_BALANCE_ENUM : 
fromString(Config.cloud_warm_up_for_rebalance_type);
+            ? CloudComputeGroupMeta.DEFAULT_COMPUTE_GROUP_BALANCE_ENUM
+            : fromString(Config.cloud_warm_up_for_rebalance_type);
     }
 }
diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/cloud/catalog/ComputeGroup.java 
b/fe/fe-core/src/main/java/org/apache/doris/cloud/catalog/CloudComputeGroupMeta.java
similarity index 89%
rename from 
fe/fe-core/src/main/java/org/apache/doris/cloud/catalog/ComputeGroup.java
rename to 
fe/fe-core/src/main/java/org/apache/doris/cloud/catalog/CloudComputeGroupMeta.java
index c895f13f7a0..4d258ed262e 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/cloud/catalog/ComputeGroup.java
+++ 
b/fe/fe-core/src/main/java/org/apache/doris/cloud/catalog/CloudComputeGroupMeta.java
@@ -34,8 +34,26 @@ import java.util.LinkedHashMap;
 import java.util.List;
 import java.util.Map;
 
-public class ComputeGroup {
-    private static final Logger LOG = LogManager.getLogger(ComputeGroup.class);
+/**
+ * FE-side in-memory metadata for a cloud compute group.
+ *
+ * <p>This class models both physical and virtual cloud compute groups and 
keeps cloud-only
+ * control-plane state, including the compute group type, active-standby 
policy, sub compute
+ * groups, availability timestamps, and cache warm-up properties. Its 
instances are refreshed
+ * from the meta service by {@link CloudInstanceStatusChecker} and
+ * {@link org.apache.doris.cloud.system.CloudSystemInfoService}.
+ *
+ * <p>Do not confuse this class with {@link 
org.apache.doris.resource.computegroup.ComputeGroup}.
+ * The resource-layer class is a runtime routing abstraction shared by cloud 
and non-cloud
+ * deployments: it selects backends and resolves the workload group namespace 
for a request.
+ * In contrast, this class is the long-lived cloud control-plane metadata 
consulted during
+ * routing, failover, and cache warm-up.
+ *
+ * <p>The meta service is the source of truth. This class is only an FE 
in-memory mirror and is
+ * not persisted in the FE edit log or image.
+ */
+public class CloudComputeGroupMeta {
+    private static final Logger LOG = 
LogManager.getLogger(CloudComputeGroupMeta.class);
 
     public static final String BALANCE_TYPE = "balance_type";
 
@@ -139,7 +157,7 @@ public class ComputeGroup {
     @Setter
     private Map<String, String> properties = new 
LinkedHashMap<>(ALL_PROPERTIES_DEFAULT_VALUE_MAP);
 
-    public ComputeGroup(String id, String name, ComputeTypeEnum type) {
+    public CloudComputeGroupMeta(String id, String name, ComputeTypeEnum type) 
{
         this.id = id;
         this.name = name;
         this.type = type;
@@ -305,10 +323,10 @@ public class ComputeGroup {
         if (this == o) {
             return true;
         }
-        if (!(o instanceof ComputeGroup)) {
+        if (!(o instanceof CloudComputeGroupMeta)) {
             return false;
         }
-        ComputeGroup that = (ComputeGroup) o;
+        CloudComputeGroupMeta that = (CloudComputeGroupMeta) o;
         return unavailableSince == that.unavailableSince
                 && availableSince == that.availableSince
                 && id.equals(that.id)
diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/cloud/catalog/CloudInstanceStatusChecker.java
 
b/fe/fe-core/src/main/java/org/apache/doris/cloud/catalog/CloudInstanceStatusChecker.java
index 73805a950ce..0c7c7774445 100644
--- 
a/fe/fe-core/src/main/java/org/apache/doris/cloud/catalog/CloudInstanceStatusChecker.java
+++ 
b/fe/fe-core/src/main/java/org/apache/doris/cloud/catalog/CloudInstanceStatusChecker.java
@@ -113,7 +113,7 @@ public class CloudInstanceStatusChecker extends 
MasterDaemon {
 
     private void handleComputeClusters(List<Cloud.ClusterPB> computeClusters) {
         for (Cloud.ClusterPB computeClusterInMs : computeClusters) {
-            ComputeGroup computeGroupInFe = cloudSystemInfoService
+            CloudComputeGroupMeta computeGroupInFe = cloudSystemInfoService
                     .getComputeGroupById(computeClusterInMs.getClusterId());
             if (computeGroupInFe == null) {
                 // cluster checker will sync it
@@ -131,7 +131,7 @@ public class CloudInstanceStatusChecker extends 
MasterDaemon {
      * Compare properties between compute cluster in MS and compute group in 
FE,
      * update only the changed key-value pairs to avoid unnecessary updates.
      */
-    private void updatePropertiesIfChanged(ComputeGroup computeGroupInFe, 
Cloud.ClusterPB computeClusterInMs) {
+    private void updatePropertiesIfChanged(CloudComputeGroupMeta 
computeGroupInFe, Cloud.ClusterPB computeClusterInMs) {
         Map<String, String> propertiesInMs = 
computeClusterInMs.getPropertiesMap();
         Map<String, String> propertiesInFe = computeGroupInFe.getProperties();
 
@@ -181,7 +181,7 @@ public class CloudInstanceStatusChecker extends 
MasterDaemon {
 
     private void handleVirtualClusters(List<Cloud.ClusterPB> virtualGroups, 
List<Cloud.ClusterPB> computeClusters) {
         for (Cloud.ClusterPB virtualGroupInMs : virtualGroups) {
-            ComputeGroup virtualGroupInFe = cloudSystemInfoService
+            CloudComputeGroupMeta virtualGroupInFe = cloudSystemInfoService
                     .getComputeGroupById(virtualGroupInMs.getClusterId());
             if (virtualGroupInFe != null) {
                 handleExistingVirtualComputeGroup(virtualGroupInMs, 
virtualGroupInFe);
@@ -203,7 +203,7 @@ public class CloudInstanceStatusChecker extends 
MasterDaemon {
         }
     }
 
-    private void cancelCacheJobs(ComputeGroup vcgInFe, List<String> jobIds) {
+    private void cancelCacheJobs(CloudComputeGroupMeta vcgInFe, List<String> 
jobIds) {
         CacheHotspotManager cacheHotspotManager = ((CloudEnv) 
Env.getCurrentEnv()).getCacheHotspotMgr();
         if (!jobIds.isEmpty()) {
             LOG.info("warmup-vcg cancel-cache-jobs vcgName={} 
activeComputeGroup={} standbyComputeGroup={} "
@@ -224,7 +224,7 @@ public class CloudInstanceStatusChecker extends 
MasterDaemon {
         }
     }
 
-    private void checkNeedRebuildFileCache(ComputeGroup virtualGroupInFe, 
List<String> jobIdsInMs) {
+    private void checkNeedRebuildFileCache(CloudComputeGroupMeta 
virtualGroupInFe, List<String> jobIdsInMs) {
         CacheHotspotManager cacheHotspotManager = ((CloudEnv) 
Env.getCurrentEnv()).getCacheHotspotMgr();
         // check jobIds in Ms valid, if been cancelled, start new jobs
         for (String jobId : jobIdsInMs) {
@@ -272,7 +272,8 @@ public class CloudInstanceStatusChecker extends 
MasterDaemon {
     /**
      * Generates and synchronizes file cache related tasks for virtual 
computing groups on the FE master.
      */
-    private void syncFileCacheTasksForVirtualGroup(Cloud.ClusterPB 
virtualGroupInMs, ComputeGroup virtualGroupInFe) {
+    private void syncFileCacheTasksForVirtualGroup(
+            Cloud.ClusterPB virtualGroupInMs, CloudComputeGroupMeta 
virtualGroupInFe) {
         if (!virtualGroupInMs.hasClusterPolicy()) {
             LOG.warn("virtual compute err, clusterName {}, no cluster policy 
{}",
                     virtualGroupInFe.getName(), virtualGroupInMs);
@@ -339,7 +340,8 @@ public class CloudInstanceStatusChecker extends 
MasterDaemon {
         }
     }
 
-    private void handleExistingVirtualComputeGroup(Cloud.ClusterPB 
clusterInMs, ComputeGroup virtualGroupInFe) {
+    private void handleExistingVirtualComputeGroup(
+            Cloud.ClusterPB clusterInMs, CloudComputeGroupMeta 
virtualGroupInFe) {
         if (!isClusterIdConsistent(clusterInMs, virtualGroupInFe)) {
             return;
         }
@@ -355,7 +357,7 @@ public class CloudInstanceStatusChecker extends 
MasterDaemon {
         diffAndUpdateComputeGroup(clusterInMs, virtualGroupInFe);
     }
 
-    private boolean isClusterIdConsistent(Cloud.ClusterPB cluster, 
ComputeGroup computeGroup) {
+    private boolean isClusterIdConsistent(Cloud.ClusterPB cluster, 
CloudComputeGroupMeta computeGroup) {
         if (!cluster.getClusterId().equals(computeGroup.getId())) {
             LOG.warn("virtual compute err, group id changed, in fe={} but in 
ms={}, "
                     + "verbose {}, please check it",
@@ -382,7 +384,7 @@ public class CloudInstanceStatusChecker extends 
MasterDaemon {
         return true;
     }
 
-    private boolean areSubComputeGroupsValid(Cloud.ClusterPB clusterInMs, 
ComputeGroup virtualGroupInFe) {
+    private boolean areSubComputeGroupsValid(Cloud.ClusterPB clusterInMs, 
CloudComputeGroupMeta virtualGroupInFe) {
         List<String> subComputeGroups = clusterInMs.getClusterNamesList();
         if (subComputeGroups.isEmpty() || 
virtualGroupInFe.getSubComputeGroups() == null) {
             LOG.warn("virtual compute err, please check it, verbose {}", 
virtualGroupInFe);
@@ -396,7 +398,7 @@ public class CloudInstanceStatusChecker extends 
MasterDaemon {
         return true;
     }
 
-    private void diffAndUpdateComputeGroup(Cloud.ClusterPB cluster, 
ComputeGroup computeGroup) {
+    private void diffAndUpdateComputeGroup(Cloud.ClusterPB cluster, 
CloudComputeGroupMeta computeGroup) {
         // vcg rename logic, here cluster_id same, but cluster_name changed, 
so vcg renamed
         String clusterNameInMs = cluster.getClusterName();
         String computeGroupNameInFe = computeGroup.getName();
@@ -490,10 +492,10 @@ public class CloudInstanceStatusChecker extends 
MasterDaemon {
             return;
         }
         checkSubClusters(subComputeGroups, cluster, computeClusters);
-        ComputeGroup computeGroup = new ComputeGroup(cluster.getClusterId(),
-                cluster.getClusterName(), 
ComputeGroup.ComputeTypeEnum.VIRTUAL);
+        CloudComputeGroupMeta computeGroup = new 
CloudComputeGroupMeta(cluster.getClusterId(),
+                cluster.getClusterName(), 
CloudComputeGroupMeta.ComputeTypeEnum.VIRTUAL);
         computeGroup.setSubComputeGroups(new ArrayList<>(subComputeGroups));
-        ComputeGroup.Policy policy = new ComputeGroup.Policy();
+        CloudComputeGroupMeta.Policy policy = new 
CloudComputeGroupMeta.Policy();
         
policy.setActiveComputeGroup(cluster.getClusterPolicy().getActiveClusterName());
         
policy.setStandbyComputeGroup(cluster.getClusterPolicy().getStandbyClusterNames(0));
         
policy.setFailoverFailureThreshold(cluster.getClusterPolicy().getFailoverFailureThreshold());
@@ -541,7 +543,7 @@ public class CloudInstanceStatusChecker extends 
MasterDaemon {
     private void removeObsoleteVirtualGroups(List<Cloud.ClusterPB> 
virtualClusters) {
         List<String> msVirtualClusters = 
virtualClusters.stream().map(Cloud.ClusterPB::getClusterId)
                 .collect(Collectors.toList());
-        for (ComputeGroup computeGroup : 
cloudSystemInfoService.getComputeGroups(true)) {
+        for (CloudComputeGroupMeta computeGroup : 
cloudSystemInfoService.getComputeGroups(true)) {
             // in fe mem, but not in meta server
             if (!msVirtualClusters.contains(computeGroup.getId())) {
                 LOG.info("virtual compute group {} will be removed.", 
computeGroup.getName());
diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/cloud/catalog/CloudTabletRebalancer.java
 
b/fe/fe-core/src/main/java/org/apache/doris/cloud/catalog/CloudTabletRebalancer.java
index ee9eb1eb568..6acaad24e07 100644
--- 
a/fe/fe-core/src/main/java/org/apache/doris/cloud/catalog/CloudTabletRebalancer.java
+++ 
b/fe/fe-core/src/main/java/org/apache/doris/cloud/catalog/CloudTabletRebalancer.java
@@ -202,7 +202,7 @@ public class CloudTabletRebalancer extends MasterDaemon {
      * Get the current balance type for a compute group, falling back to 
global balance type if not found
      */
     private BalanceTypeEnum getCurrentBalanceType(String clusterId) {
-        ComputeGroup cg = 
cloudSystemInfoService.getComputeGroupById(clusterId);
+        CloudComputeGroupMeta cg = 
cloudSystemInfoService.getComputeGroupById(clusterId);
         if (cg == null) {
             LOG.debug("compute group not found, use global balance type, id 
{}", clusterId);
             return globalBalanceTypeEnum;
@@ -219,7 +219,7 @@ public class CloudTabletRebalancer extends MasterDaemon {
      * Get the current task timeout for a compute group, falling back to 
global timeout if not found
      */
     private int getCurrentTaskTimeout(String clusterId) {
-        ComputeGroup cg = 
cloudSystemInfoService.getComputeGroupById(clusterId);
+        CloudComputeGroupMeta cg = 
cloudSystemInfoService.getComputeGroupById(clusterId);
         if (cg == null) {
             return Config.cloud_pre_heating_time_limit_sec;
         }
@@ -233,15 +233,15 @@ public class CloudTabletRebalancer extends MasterDaemon {
     }
 
     private boolean isComputeGroupBalanceChanged(String clusterId) {
-        ComputeGroup cg = 
cloudSystemInfoService.getComputeGroupById(clusterId);
+        CloudComputeGroupMeta cg = 
cloudSystemInfoService.getComputeGroupById(clusterId);
         if (cg == null) {
             return false;
         }
 
         BalanceTypeEnum computeGroupBalanceType = cg.getBalanceType();
         int computeGroupTimeout = cg.getBalanceWarmUpTaskTimeout();
-        return computeGroupBalanceType != 
ComputeGroup.DEFAULT_COMPUTE_GROUP_BALANCE_ENUM
-               || computeGroupTimeout != 
ComputeGroup.DEFAULT_BALANCE_WARM_UP_TASK_TIMEOUT;
+        return computeGroupBalanceType != 
CloudComputeGroupMeta.DEFAULT_COMPUTE_GROUP_BALANCE_ENUM
+               || computeGroupTimeout != 
CloudComputeGroupMeta.DEFAULT_BALANCE_WARM_UP_TASK_TIMEOUT;
     }
 
     public CloudTabletRebalancer(CloudSystemInfoService 
cloudSystemInfoService) {
diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/cloud/system/CloudSystemInfoService.java
 
b/fe/fe-core/src/main/java/org/apache/doris/cloud/system/CloudSystemInfoService.java
index 13b347694c9..b512871d85e 100644
--- 
a/fe/fe-core/src/main/java/org/apache/doris/cloud/system/CloudSystemInfoService.java
+++ 
b/fe/fe-core/src/main/java/org/apache/doris/cloud/system/CloudSystemInfoService.java
@@ -23,8 +23,8 @@ import org.apache.doris.catalog.ColocateTableIndex.GroupId;
 import org.apache.doris.catalog.Env;
 import org.apache.doris.catalog.ReplicaAllocation;
 import org.apache.doris.cloud.catalog.CloudColocatePlacement;
+import org.apache.doris.cloud.catalog.CloudComputeGroupMeta;
 import org.apache.doris.cloud.catalog.CloudEnv;
-import org.apache.doris.cloud.catalog.ComputeGroup;
 import org.apache.doris.cloud.proto.Cloud;
 import org.apache.doris.cloud.proto.Cloud.ClusterPB;
 import org.apache.doris.cloud.proto.Cloud.InstanceInfoPB;
@@ -99,8 +99,8 @@ public class CloudSystemInfoService extends SystemInfoService 
{
     // clusterName -> clusterId
     protected Map<String, String> clusterNameToId = new ConcurrentHashMap<>();
 
-    // clusterId -> ComputeGroup
-    protected Map<String, ComputeGroup> computeGroupIdToComputeGroup = new 
ConcurrentHashMap<>();
+    // clusterId -> CloudComputeGroupMeta
+    protected Map<String, CloudComputeGroupMeta> computeGroupIdToComputeGroup 
= new ConcurrentHashMap<>();
 
     private final Map<ColocatePlacementKey, ColocatePlacementCache> 
colocatePlacementCache =
             new ConcurrentHashMap<>();
@@ -260,7 +260,7 @@ public class CloudSystemInfoService extends 
SystemInfoService {
         clusterNameToId.remove(oldClusterName);
     }
 
-    public ComputeGroup getComputeGroupByName(String computeGroupName) {
+    public CloudComputeGroupMeta getComputeGroupByName(String 
computeGroupName) {
         // rlock guards the compound name->id->group lookup: writers 
(add/remove/rename)
         // update both maps under wlock, and the read must observe a 
consistent snapshot
         // so callers like getPhysicalCluster don't transiently see a virtual 
group name
@@ -355,7 +355,7 @@ public class CloudSystemInfoService extends 
SystemInfoService {
         return getCloudClusterIdByName(cluster);
     }
 
-    public ComputeGroup getComputeGroupById(String computeGroupId) {
+    public CloudComputeGroupMeta getComputeGroupById(String computeGroupId) {
         try {
             rlock.lock();
             return computeGroupIdToComputeGroup.get(computeGroupId);
@@ -364,7 +364,7 @@ public class CloudSystemInfoService extends 
SystemInfoService {
         }
     }
 
-    public void addComputeGroup(String computeGroupId, ComputeGroup 
computeGroup) {
+    public void addComputeGroup(String computeGroupId, CloudComputeGroupMeta 
computeGroup) {
         LOG.debug("add id {} computeGroupIdToComputeGroup : {} ", 
computeGroupId, computeGroupIdToComputeGroup);
         try {
             wlock.lock();
@@ -376,8 +376,8 @@ public class CloudSystemInfoService extends 
SystemInfoService {
     }
 
     public boolean isStandByComputeGroup(String clusterName) {
-        List<ComputeGroup> virtualGroups = getComputeGroups(true);
-        for (ComputeGroup vcg : virtualGroups) {
+        List<CloudComputeGroupMeta> virtualGroups = getComputeGroups(true);
+        for (CloudComputeGroupMeta vcg : virtualGroups) {
             if (vcg.getPolicy().getStandbyComputeGroup().equals(clusterName)) {
                 return true;
             }
@@ -385,7 +385,7 @@ public class CloudSystemInfoService extends 
SystemInfoService {
         return false;
     }
 
-    public List<ComputeGroup> getComputeGroups(boolean virtual) {
+    public List<CloudComputeGroupMeta> getComputeGroups(boolean virtual) {
         LOG.debug("get virtual {} computeGroupIdToComputeGroup : {} ", 
virtual, computeGroupIdToComputeGroup);
         try {
             rlock.lock();
@@ -404,7 +404,7 @@ public class CloudSystemInfoService extends 
SystemInfoService {
     public String ownedByVirtualComputeGroup(String computeGroupName) {
         try {
             rlock.lock();
-            for (ComputeGroup vcg : getComputeGroups(true)) {
+            for (CloudComputeGroupMeta vcg : getComputeGroups(true)) {
                 if 
(computeGroupName.equals(vcg.getPolicy().getActiveComputeGroup())) {
                     return vcg.getName();
                 }
@@ -433,7 +433,7 @@ public class CloudSystemInfoService extends 
SystemInfoService {
     }
 
     public void renameVirtualComputeGroup(String computeGroupId, String 
oldComputeGroupName,
-                                          ComputeGroup newComputeGroup) {
+                                          CloudComputeGroupMeta 
newComputeGroup) {
         try {
             wlock.lock();
             computeGroupIdToComputeGroup.put(computeGroupId, newComputeGroup);
@@ -587,7 +587,8 @@ public class CloudSystemInfoService extends 
SystemInfoService {
 
             clusterNameToId.put(clusterName, clusterId);
             // add to computeGroupIdToComputeGroup
-            ComputeGroup cg = new ComputeGroup(clusterId, clusterName, 
ComputeGroup.ComputeTypeEnum.COMPUTE);
+            CloudComputeGroupMeta cg = new CloudComputeGroupMeta(
+                    clusterId, clusterName, 
CloudComputeGroupMeta.ComputeTypeEnum.COMPUTE);
             addComputeGroup(clusterId, cg);
 
             List<Backend> be = clusterIdToBackend.get(clusterId);
@@ -685,7 +686,7 @@ public class CloudSystemInfoService extends 
SystemInfoService {
         }
     }
 
-    public static void updateFileCacheJobIds(ComputeGroup cg, List<String> 
jobIds) {
+    public static void updateFileCacheJobIds(CloudComputeGroupMeta cg, 
List<String> jobIds) {
         Cloud.ClusterPolicy policy = Cloud.ClusterPolicy.newBuilder()
                 .setType(Cloud.ClusterPolicy.PolicyType.ActiveStandby)
                 .addAllCacheWarmupJobids(jobIds).build();
@@ -727,7 +728,7 @@ public class CloudSystemInfoService extends 
SystemInfoService {
     }
     */
 
-    private void switchActiveStandby(ComputeGroup cg, String active, String 
standby) {
+    private void switchActiveStandby(CloudComputeGroupMeta cg, String active, 
String standby) {
         Cloud.ClusterPolicy policy = cg.getPolicy().toPb().toBuilder()
                 .clearStandbyClusterNames()
                 .addStandbyClusterNames(active)
@@ -1060,7 +1061,7 @@ public class CloudSystemInfoService extends 
SystemInfoService {
     }
 
     public String getPhysicalCluster(String clusterName) {
-        ComputeGroup cg = getComputeGroupByName(clusterName);
+        CloudComputeGroupMeta cg = getComputeGroupByName(clusterName);
         if (cg == null) {
             return clusterName;
         }
@@ -1069,11 +1070,11 @@ public class CloudSystemInfoService extends 
SystemInfoService {
             return clusterName;
         }
 
-        ComputeGroup.Policy policy = cg.getPolicy();
+        CloudComputeGroupMeta.Policy policy = cg.getPolicy();
         // todo check policy
         String acgName = policy.getActiveComputeGroup();
         if (acgName != null) {
-            ComputeGroup acg = getComputeGroupByName(acgName);
+            CloudComputeGroupMeta acg = getComputeGroupByName(acgName);
             if (acg != null) {
                 if (isComputeGroupAvailable(acgName, 
policy.getUnhealthyNodeThresholdPercent())) {
                     acg.setUnavailableSince(-1);
@@ -1089,11 +1090,11 @@ public class CloudSystemInfoService extends 
SystemInfoService {
 
         String scgName = policy.getStandbyComputeGroup();
         if (scgName != null) {
-            ComputeGroup scg = getComputeGroupByName(scgName);
+            CloudComputeGroupMeta scg = getComputeGroupByName(scgName);
             if (scg != null) {
                 if (isComputeGroupAvailable(scgName, 
policy.getUnhealthyNodeThresholdPercent())) {
                     scg.setUnavailableSince(-1);
-                    ComputeGroup acg = getComputeGroupByName(acgName);
+                    CloudComputeGroupMeta acg = getComputeGroupByName(acgName);
                     if (acg == null || System.currentTimeMillis() - 
acg.getUnavailableSince()
                             > policy.getFailoverFailureThreshold() * 
Config.heartbeat_interval_second * 1000) {
                         switchActiveStandby(cg, acgName, scgName);
@@ -1378,7 +1379,7 @@ public class CloudSystemInfoService extends 
SystemInfoService {
                             clusterId, computeGroupIdToComputeGroup);
                     continue;
                 }
-                ComputeGroup computeGroup = 
computeGroupIdToComputeGroup.get(clusterId);
+                CloudComputeGroupMeta computeGroup = 
computeGroupIdToComputeGroup.get(clusterId);
                 if (!needVirtual && computeGroup.isVirtual()) {
                     continue;
                 }
@@ -1421,7 +1422,7 @@ public class CloudSystemInfoService extends 
SystemInfoService {
         try {
             for (Map.Entry<String, String> nameAndId : 
clusterNameToId.entrySet()) {
                 String clusterId = nameAndId.getValue();
-                ComputeGroup computeGroup = 
computeGroupIdToComputeGroup.get(clusterId);
+                CloudComputeGroupMeta computeGroup = 
computeGroupIdToComputeGroup.get(clusterId);
                 if (computeGroup == null) {
                     LOG.warn("cant find clusterId {} in 
computeGroupIdToComputeGroup {}",
                             clusterId, computeGroupIdToComputeGroup);
diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/commands/AlterComputeGroupCommand.java
 
b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/commands/AlterComputeGroupCommand.java
index 8a295678f48..d5f520661b8 100644
--- 
a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/commands/AlterComputeGroupCommand.java
+++ 
b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/commands/AlterComputeGroupCommand.java
@@ -18,7 +18,7 @@
 package org.apache.doris.nereids.trees.plans.commands;
 
 import org.apache.doris.catalog.Env;
-import org.apache.doris.cloud.catalog.ComputeGroup;
+import org.apache.doris.cloud.catalog.CloudComputeGroupMeta;
 import org.apache.doris.cloud.system.CloudSystemInfoService;
 import org.apache.doris.common.AnalysisException;
 import org.apache.doris.common.Config;
@@ -68,7 +68,7 @@ public class AlterComputeGroupCommand extends AlterCommand {
 
         CloudSystemInfoService cloudSys = ((CloudSystemInfoService) 
Env.getCurrentSystemInfo());
         // check compute group exist
-        ComputeGroup cg = cloudSys.getComputeGroupByName(computeGroupName);
+        CloudComputeGroupMeta cg = 
cloudSys.getComputeGroupByName(computeGroupName);
         if (cg == null) {
             throw new AnalysisException("Compute Group " + computeGroupName + 
" does not exist");
         }
diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/commands/ShowClustersCommand.java
 
b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/commands/ShowClustersCommand.java
index a4c389941e0..c774849ed48 100644
--- 
a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/commands/ShowClustersCommand.java
+++ 
b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/commands/ShowClustersCommand.java
@@ -22,7 +22,7 @@ import org.apache.doris.analysis.ResourceTypeEnum;
 import org.apache.doris.catalog.Column;
 import org.apache.doris.catalog.Env;
 import org.apache.doris.catalog.ScalarType;
-import org.apache.doris.cloud.catalog.ComputeGroup;
+import org.apache.doris.cloud.catalog.CloudComputeGroupMeta;
 import org.apache.doris.cloud.qe.ComputeGroupException;
 import org.apache.doris.cloud.system.CloudSystemInfoService;
 import org.apache.doris.common.AnalysisException;
@@ -96,9 +96,9 @@ public class ShowClustersCommand extends ShowCommand {
         CloudSystemInfoService cloudSys = ((CloudSystemInfoService) 
Env.getCurrentSystemInfo());
         clusterNames = cloudSys.getCloudClusterNames();
         // virtual cluster info
-        List<ComputeGroup> virtualComputeGroup = 
cloudSys.getComputeGroups(true);
+        List<CloudComputeGroupMeta> virtualComputeGroup = 
cloudSys.getComputeGroups(true);
         List<String> virtualComputeGroupNames = virtualComputeGroup.stream()
-                .map(ComputeGroup::getName).collect(Collectors.toList());
+                
.map(CloudComputeGroupMeta::getName).collect(Collectors.toList());
 
         clusterNames.addAll(virtualComputeGroupNames);
 
@@ -112,7 +112,7 @@ public class ShowClustersCommand extends ShowCommand {
                             PrivPredicate.USAGE, ResourceTypeEnum.CLUSTER)) {
                 continue;
             }
-            ComputeGroup cg = cloudSys.getComputeGroupByName(clusterName);
+            CloudComputeGroupMeta cg = 
cloudSys.getComputeGroupByName(clusterName);
             if (cg == null) {
                 continue;
             }
diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/commands/WarmUpClusterCommand.java
 
b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/commands/WarmUpClusterCommand.java
index 4c6d74c898f..fd77fb41779 100644
--- 
a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/commands/WarmUpClusterCommand.java
+++ 
b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/commands/WarmUpClusterCommand.java
@@ -24,8 +24,8 @@ import org.apache.doris.catalog.OlapTable;
 import org.apache.doris.catalog.ScalarType;
 import org.apache.doris.catalog.info.TableNameInfo;
 import org.apache.doris.cloud.OnTablesFilter.TableFilterRule;
+import org.apache.doris.cloud.catalog.CloudComputeGroupMeta;
 import org.apache.doris.cloud.catalog.CloudEnv;
-import org.apache.doris.cloud.catalog.ComputeGroup;
 import org.apache.doris.cloud.system.CloudSystemInfoService;
 import org.apache.doris.common.AnalysisException;
 import org.apache.doris.common.Config;
@@ -141,7 +141,7 @@ public class WarmUpClusterCommand extends Command 
implements ForwardWithSync {
 
     private void checkWarmupCgs(CloudSystemInfoService cloudSys) throws 
AnalysisException {
         if (!Strings.isNullOrEmpty(srcCluster)) {
-            ComputeGroup srcCg = cloudSys.getComputeGroupByName(srcCluster);
+            CloudComputeGroupMeta srcCg = 
cloudSys.getComputeGroupByName(srcCluster);
             if (srcCg != null && srcCg.isVirtual()) {
                 throw new AnalysisException("The srcClusterName " + srcCluster
                     + " is a virtual compute group, not support");
@@ -149,7 +149,7 @@ public class WarmUpClusterCommand extends Command 
implements ForwardWithSync {
         }
 
         if (!Strings.isNullOrEmpty(dstCluster)) {
-            ComputeGroup dstCg = cloudSys.getComputeGroupByName(dstCluster);
+            CloudComputeGroupMeta dstCg = 
cloudSys.getComputeGroupByName(dstCluster);
             if (dstCg != null && dstCg.isVirtual()) {
                 throw new AnalysisException("The dstClusterName " + dstCluster
                     + " is a virtual compute group, not support");
diff --git 
a/fe/fe-core/src/test/java/org/apache/doris/cloud/WarmUpClusterOnTablesParseTest.java
 
b/fe/fe-core/src/test/java/org/apache/doris/cloud/WarmUpClusterOnTablesParseTest.java
index 8bec1d2d5eb..ceee9533386 100644
--- 
a/fe/fe-core/src/test/java/org/apache/doris/cloud/WarmUpClusterOnTablesParseTest.java
+++ 
b/fe/fe-core/src/test/java/org/apache/doris/cloud/WarmUpClusterOnTablesParseTest.java
@@ -20,7 +20,7 @@ package org.apache.doris.cloud;
 import org.apache.doris.catalog.Env;
 import org.apache.doris.cloud.OnTablesFilter.TableFilterRule;
 import org.apache.doris.cloud.OnTablesFilter.TableFilterRule.RuleType;
-import org.apache.doris.cloud.catalog.ComputeGroup;
+import org.apache.doris.cloud.catalog.CloudComputeGroupMeta;
 import org.apache.doris.cloud.system.CloudSystemInfoService;
 import org.apache.doris.common.AnalysisException;
 import org.apache.doris.common.Config;
@@ -103,14 +103,14 @@ public class WarmUpClusterOnTablesParseTest {
 
     private void addVirtualComputeGroup(CloudSystemInfoService cloudSys,
             String virtualComputeGroupName, String activeComputeGroupName, 
String standbyComputeGroupName) {
-        ComputeGroup activeComputeGroup = new 
ComputeGroup(activeComputeGroupName + "_id",
-                activeComputeGroupName, ComputeGroup.ComputeTypeEnum.COMPUTE);
-        ComputeGroup standbyComputeGroup = new 
ComputeGroup(standbyComputeGroupName + "_id",
-                standbyComputeGroupName, ComputeGroup.ComputeTypeEnum.COMPUTE);
-        ComputeGroup virtualComputeGroup = new 
ComputeGroup(virtualComputeGroupName + "_id",
-                virtualComputeGroupName, ComputeGroup.ComputeTypeEnum.VIRTUAL);
+        CloudComputeGroupMeta activeComputeGroup = new 
CloudComputeGroupMeta(activeComputeGroupName + "_id",
+                activeComputeGroupName, 
CloudComputeGroupMeta.ComputeTypeEnum.COMPUTE);
+        CloudComputeGroupMeta standbyComputeGroup = new 
CloudComputeGroupMeta(standbyComputeGroupName + "_id",
+                standbyComputeGroupName, 
CloudComputeGroupMeta.ComputeTypeEnum.COMPUTE);
+        CloudComputeGroupMeta virtualComputeGroup = new 
CloudComputeGroupMeta(virtualComputeGroupName + "_id",
+                virtualComputeGroupName, 
CloudComputeGroupMeta.ComputeTypeEnum.VIRTUAL);
         
virtualComputeGroup.setSubComputeGroups(Arrays.asList(activeComputeGroupName, 
standbyComputeGroupName));
-        ComputeGroup.Policy policy = new ComputeGroup.Policy();
+        CloudComputeGroupMeta.Policy policy = new 
CloudComputeGroupMeta.Policy();
         policy.setActiveComputeGroup(activeComputeGroupName);
         policy.setStandbyComputeGroup(standbyComputeGroupName);
         virtualComputeGroup.setPolicy(policy);
@@ -370,7 +370,7 @@ public class WarmUpClusterOnTablesParseTest {
             CloudSystemInfoService cloudSys = 
buildCloudSystemInfoWithVirtualComputeGroup(
                     "vcg", "active_cg", "standby_cg");
             cloudSys.addComputeGroup("outside_cg_id",
-                    new ComputeGroup("outside_cg_id", "outside_cg", 
ComputeGroup.ComputeTypeEnum.COMPUTE));
+                    new CloudComputeGroupMeta("outside_cg_id", "outside_cg", 
CloudComputeGroupMeta.ComputeTypeEnum.COMPUTE));
             setField(env, Env.class, "systemInfo", cloudSys);
             WarmUpClusterCommand cmd = parse(
                     "WARM UP CLUSTER standby_cg WITH CLUSTER outside_cg "
@@ -398,7 +398,7 @@ public class WarmUpClusterOnTablesParseTest {
             CloudSystemInfoService cloudSys = 
buildCloudSystemInfoWithVirtualComputeGroup(
                     "vcg", "active_cg", "standby_cg");
             cloudSys.addComputeGroup("outside_cg_id",
-                    new ComputeGroup("outside_cg_id", "outside_cg", 
ComputeGroup.ComputeTypeEnum.COMPUTE));
+                    new CloudComputeGroupMeta("outside_cg_id", "outside_cg", 
CloudComputeGroupMeta.ComputeTypeEnum.COMPUTE));
             setField(env, Env.class, "systemInfo", cloudSys);
             WarmUpClusterCommand cmd = parse(
                     "WARM UP CLUSTER outside_cg WITH CLUSTER active_cg "
diff --git 
a/fe/fe-core/src/test/java/org/apache/doris/cloud/catalog/ComputeGroupTest.java 
b/fe/fe-core/src/test/java/org/apache/doris/cloud/catalog/CloudComputeGroupMetaTest.java
similarity index 61%
rename from 
fe/fe-core/src/test/java/org/apache/doris/cloud/catalog/ComputeGroupTest.java
rename to 
fe/fe-core/src/test/java/org/apache/doris/cloud/catalog/CloudComputeGroupMetaTest.java
index c61f2abefa4..2e4d84a4b7f 100644
--- 
a/fe/fe-core/src/test/java/org/apache/doris/cloud/catalog/ComputeGroupTest.java
+++ 
b/fe/fe-core/src/test/java/org/apache/doris/cloud/catalog/CloudComputeGroupMetaTest.java
@@ -26,12 +26,13 @@ import org.junit.jupiter.api.Test;
 
 import java.util.Map;
 
-public class ComputeGroupTest {
-    private ComputeGroup computeGroup;
+public class CloudComputeGroupMetaTest {
+    private CloudComputeGroupMeta computeGroup;
 
     @BeforeEach
     public void setUp() {
-        computeGroup = new ComputeGroup("test_id", "test_group", 
ComputeGroup.ComputeTypeEnum.COMPUTE);
+        computeGroup = new CloudComputeGroupMeta("test_id", "test_group",
+                CloudComputeGroupMeta.ComputeTypeEnum.COMPUTE);
     }
 
     @Test
@@ -44,16 +45,16 @@ public class ComputeGroupTest {
     public void testCheckPropertiesWithValidBalanceType() throws DdlException {
         // 测试有效的balance_type
         Map<String, String> properties = Maps.newHashMap();
-        properties.put(ComputeGroup.BALANCE_TYPE, 
BalanceTypeEnum.WITHOUT_WARMUP.getValue());
+        properties.put(CloudComputeGroupMeta.BALANCE_TYPE, 
BalanceTypeEnum.WITHOUT_WARMUP.getValue());
         computeGroup.checkProperties(properties);
 
-        properties.put(ComputeGroup.BALANCE_TYPE, 
BalanceTypeEnum.ASYNC_WARMUP.getValue());
+        properties.put(CloudComputeGroupMeta.BALANCE_TYPE, 
BalanceTypeEnum.ASYNC_WARMUP.getValue());
         computeGroup.checkProperties(properties);
 
-        properties.put(ComputeGroup.BALANCE_TYPE, 
BalanceTypeEnum.SYNC_WARMUP.getValue());
+        properties.put(CloudComputeGroupMeta.BALANCE_TYPE, 
BalanceTypeEnum.SYNC_WARMUP.getValue());
         computeGroup.checkProperties(properties);
 
-        properties.put(ComputeGroup.BALANCE_TYPE, 
BalanceTypeEnum.PEER_READ_ASYNC_WARMUP.getValue());
+        properties.put(CloudComputeGroupMeta.BALANCE_TYPE, 
BalanceTypeEnum.PEER_READ_ASYNC_WARMUP.getValue());
         computeGroup.checkProperties(properties);
     }
 
@@ -61,7 +62,7 @@ public class ComputeGroupTest {
     public void testCheckPropertiesWithInvalidBalanceType() {
         // 测试无效的balance_type
         Map<String, String> properties = Maps.newHashMap();
-        properties.put(ComputeGroup.BALANCE_TYPE, "invalid_type");
+        properties.put(CloudComputeGroupMeta.BALANCE_TYPE, "invalid_type");
 
         Assertions.assertThrows(DdlException.class, () -> {
             computeGroup.checkProperties(properties);
@@ -72,11 +73,11 @@ public class ComputeGroupTest {
     public void testCheckPropertiesWithValidTimeout() throws DdlException {
         // 测试有效的timeout
         Map<String, String> properties = Maps.newHashMap();
-        properties.put(ComputeGroup.BALANCE_TYPE, 
BalanceTypeEnum.ASYNC_WARMUP.getValue());
-        properties.put(ComputeGroup.BALANCE_WARM_UP_TASK_TIMEOUT, "300");
+        properties.put(CloudComputeGroupMeta.BALANCE_TYPE, 
BalanceTypeEnum.ASYNC_WARMUP.getValue());
+        properties.put(CloudComputeGroupMeta.BALANCE_WARM_UP_TASK_TIMEOUT, 
"300");
         computeGroup.checkProperties(properties);
 
-        properties.put(ComputeGroup.BALANCE_WARM_UP_TASK_TIMEOUT, "1");
+        properties.put(CloudComputeGroupMeta.BALANCE_WARM_UP_TASK_TIMEOUT, 
"1");
         computeGroup.checkProperties(properties);
     }
 
@@ -84,13 +85,13 @@ public class ComputeGroupTest {
     public void testCheckPropertiesWithInvalidTimeout() {
         // 测试无效的timeout
         Map<String, String> properties = Maps.newHashMap();
-        properties.put(ComputeGroup.BALANCE_WARM_UP_TASK_TIMEOUT, "-1");
+        properties.put(CloudComputeGroupMeta.BALANCE_WARM_UP_TASK_TIMEOUT, 
"-1");
 
         Assertions.assertThrows(DdlException.class, () -> {
             computeGroup.checkProperties(properties);
         });
 
-        properties.put(ComputeGroup.BALANCE_WARM_UP_TASK_TIMEOUT, "invalid");
+        properties.put(CloudComputeGroupMeta.BALANCE_WARM_UP_TASK_TIMEOUT, 
"invalid");
         Assertions.assertThrows(DdlException.class, () -> {
             computeGroup.checkProperties(properties);
         });
@@ -111,62 +112,62 @@ public class ComputeGroupTest {
     public void testModifyPropertiesWithDirectSwitch() throws DdlException {
         // 测试without_warmup类型,应该删除timeout
         Map<String, String> inputProperties = Maps.newHashMap();
-        inputProperties.put(ComputeGroup.BALANCE_TYPE, 
BalanceTypeEnum.WITHOUT_WARMUP.getValue());
-        inputProperties.put(ComputeGroup.BALANCE_WARM_UP_TASK_TIMEOUT,
-                
String.valueOf(ComputeGroup.DEFAULT_BALANCE_WARM_UP_TASK_TIMEOUT));
+        inputProperties.put(CloudComputeGroupMeta.BALANCE_TYPE, 
BalanceTypeEnum.WITHOUT_WARMUP.getValue());
+        inputProperties.put(CloudComputeGroupMeta.BALANCE_WARM_UP_TASK_TIMEOUT,
+                
String.valueOf(CloudComputeGroupMeta.DEFAULT_BALANCE_WARM_UP_TASK_TIMEOUT));
 
         // 先设置timeout到properties中
-        
computeGroup.getProperties().put(ComputeGroup.BALANCE_WARM_UP_TASK_TIMEOUT,
-                
String.valueOf(ComputeGroup.DEFAULT_BALANCE_WARM_UP_TASK_TIMEOUT));
-        
Assertions.assertTrue(computeGroup.getProperties().containsKey(ComputeGroup.BALANCE_WARM_UP_TASK_TIMEOUT));
+        
computeGroup.getProperties().put(CloudComputeGroupMeta.BALANCE_WARM_UP_TASK_TIMEOUT,
+                
String.valueOf(CloudComputeGroupMeta.DEFAULT_BALANCE_WARM_UP_TASK_TIMEOUT));
+        
Assertions.assertTrue(computeGroup.getProperties().containsKey(CloudComputeGroupMeta.BALANCE_WARM_UP_TASK_TIMEOUT));
 
         computeGroup.modifyProperties(inputProperties);
 
         // 验证timeout被删除
-        
Assertions.assertFalse(computeGroup.getProperties().containsKey(ComputeGroup.BALANCE_WARM_UP_TASK_TIMEOUT));
+        
Assertions.assertFalse(computeGroup.getProperties().containsKey(CloudComputeGroupMeta.BALANCE_WARM_UP_TASK_TIMEOUT));
     }
 
     @Test
     public void testModifyPropertiesWithSyncCache() throws DdlException {
         // 测试sync_cache类型,应该删除timeout
         Map<String, String> inputProperties = Maps.newHashMap();
-        inputProperties.put(ComputeGroup.BALANCE_TYPE, 
BalanceTypeEnum.SYNC_WARMUP.getValue());
-        inputProperties.put(ComputeGroup.BALANCE_WARM_UP_TASK_TIMEOUT,
-                
String.valueOf(ComputeGroup.DEFAULT_BALANCE_WARM_UP_TASK_TIMEOUT));
+        inputProperties.put(CloudComputeGroupMeta.BALANCE_TYPE, 
BalanceTypeEnum.SYNC_WARMUP.getValue());
+        inputProperties.put(CloudComputeGroupMeta.BALANCE_WARM_UP_TASK_TIMEOUT,
+                
String.valueOf(CloudComputeGroupMeta.DEFAULT_BALANCE_WARM_UP_TASK_TIMEOUT));
 
         // 先设置timeout到properties中
-        
computeGroup.getProperties().put(ComputeGroup.BALANCE_WARM_UP_TASK_TIMEOUT,
-                
String.valueOf(ComputeGroup.DEFAULT_BALANCE_WARM_UP_TASK_TIMEOUT));
-        
Assertions.assertTrue(computeGroup.getProperties().containsKey(ComputeGroup.BALANCE_WARM_UP_TASK_TIMEOUT));
+        
computeGroup.getProperties().put(CloudComputeGroupMeta.BALANCE_WARM_UP_TASK_TIMEOUT,
+                
String.valueOf(CloudComputeGroupMeta.DEFAULT_BALANCE_WARM_UP_TASK_TIMEOUT));
+        
Assertions.assertTrue(computeGroup.getProperties().containsKey(CloudComputeGroupMeta.BALANCE_WARM_UP_TASK_TIMEOUT));
 
         computeGroup.modifyProperties(inputProperties);
 
         // 验证timeout被删除
-        
Assertions.assertFalse(computeGroup.getProperties().containsKey(ComputeGroup.BALANCE_WARM_UP_TASK_TIMEOUT));
+        
Assertions.assertFalse(computeGroup.getProperties().containsKey(CloudComputeGroupMeta.BALANCE_WARM_UP_TASK_TIMEOUT));
     }
 
     @Test
     public void testCheckPropertiesWithBalanceTypeTransition() throws 
DdlException {
-        computeGroup.getProperties().put(ComputeGroup.BALANCE_TYPE, 
BalanceTypeEnum.WITHOUT_WARMUP.getValue());
+        computeGroup.getProperties().put(CloudComputeGroupMeta.BALANCE_TYPE, 
BalanceTypeEnum.WITHOUT_WARMUP.getValue());
         Map<String, String> inputProperties = Maps.newHashMap();
-        inputProperties.put(ComputeGroup.BALANCE_TYPE, 
BalanceTypeEnum.ASYNC_WARMUP.getValue());
+        inputProperties.put(CloudComputeGroupMeta.BALANCE_TYPE, 
BalanceTypeEnum.ASYNC_WARMUP.getValue());
         computeGroup.checkProperties(inputProperties);
     }
 
     @Test
     public void testCheckPropertiesWithWarmupCacheToWarmupCache() throws 
DdlException {
-        computeGroup.getProperties().put(ComputeGroup.BALANCE_TYPE, 
BalanceTypeEnum.ASYNC_WARMUP.getValue());
+        computeGroup.getProperties().put(CloudComputeGroupMeta.BALANCE_TYPE, 
BalanceTypeEnum.ASYNC_WARMUP.getValue());
         Map<String, String> inputProperties = Maps.newHashMap();
-        inputProperties.put(ComputeGroup.BALANCE_TYPE, 
BalanceTypeEnum.ASYNC_WARMUP.getValue());
+        inputProperties.put(CloudComputeGroupMeta.BALANCE_TYPE, 
BalanceTypeEnum.ASYNC_WARMUP.getValue());
         computeGroup.checkProperties(inputProperties);
     }
 
     @Test
     public void testCheckPropertiesWithDirectSwitchToDirectSwitch() throws 
DdlException {
         // 测试从direct_switch转换到direct_switch,不需要设置timeout
-        computeGroup.getProperties().put(ComputeGroup.BALANCE_TYPE, 
BalanceTypeEnum.WITHOUT_WARMUP.getValue());
+        computeGroup.getProperties().put(CloudComputeGroupMeta.BALANCE_TYPE, 
BalanceTypeEnum.WITHOUT_WARMUP.getValue());
         Map<String, String> inputProperties = Maps.newHashMap();
-        inputProperties.put(ComputeGroup.BALANCE_TYPE, 
BalanceTypeEnum.WITHOUT_WARMUP.getValue());
+        inputProperties.put(CloudComputeGroupMeta.BALANCE_TYPE, 
BalanceTypeEnum.WITHOUT_WARMUP.getValue());
         computeGroup.checkProperties(inputProperties);
     }
 
@@ -174,34 +175,34 @@ public class ComputeGroupTest {
     public void testModifyPropertiesWithWarmupCacheAndExistingTimeout() throws 
DdlException {
         // 测试async_warmup类型,已存在timeout,不应该添加默认值
         Map<String, String> inputProperties = Maps.newHashMap();
-        inputProperties.put(ComputeGroup.BALANCE_TYPE, 
BalanceTypeEnum.ASYNC_WARMUP.getValue());
-        inputProperties.put(ComputeGroup.BALANCE_WARM_UP_TASK_TIMEOUT, "600");
+        inputProperties.put(CloudComputeGroupMeta.BALANCE_TYPE, 
BalanceTypeEnum.ASYNC_WARMUP.getValue());
+        
inputProperties.put(CloudComputeGroupMeta.BALANCE_WARM_UP_TASK_TIMEOUT, "600");
 
         // 先设置timeout到properties中
-        
computeGroup.getProperties().put(ComputeGroup.BALANCE_WARM_UP_TASK_TIMEOUT, 
"500");
-        String originalTimeout = 
computeGroup.getProperties().get(ComputeGroup.BALANCE_WARM_UP_TASK_TIMEOUT);
+        
computeGroup.getProperties().put(CloudComputeGroupMeta.BALANCE_WARM_UP_TASK_TIMEOUT,
 "500");
+        String originalTimeout = 
computeGroup.getProperties().get(CloudComputeGroupMeta.BALANCE_WARM_UP_TASK_TIMEOUT);
 
         computeGroup.modifyProperties(inputProperties);
 
         // 验证timeout没有被修改, 这里的意思是用户已经设置过timeout了,就不应该被覆盖
-        Assertions.assertEquals(originalTimeout, 
computeGroup.getProperties().get(ComputeGroup.BALANCE_WARM_UP_TASK_TIMEOUT));
+        Assertions.assertEquals(originalTimeout, 
computeGroup.getProperties().get(CloudComputeGroupMeta.BALANCE_WARM_UP_TASK_TIMEOUT));
     }
 
     @Test
     public void testModifyPropertiesWithWarmupCacheAndNoTimeout() throws 
DdlException {
         // 测试async_warmup类型,不存在timeout,应该添加默认值
         Map<String, String> inputProperties = Maps.newHashMap();
-        inputProperties.put(ComputeGroup.BALANCE_TYPE, 
BalanceTypeEnum.ASYNC_WARMUP.getValue());
+        inputProperties.put(CloudComputeGroupMeta.BALANCE_TYPE, 
BalanceTypeEnum.ASYNC_WARMUP.getValue());
 
         // 确保properties中没有timeout
-        
computeGroup.getProperties().remove(ComputeGroup.BALANCE_WARM_UP_TASK_TIMEOUT);
-        
Assertions.assertFalse(computeGroup.getProperties().containsKey(ComputeGroup.BALANCE_WARM_UP_TASK_TIMEOUT));
+        
computeGroup.getProperties().remove(CloudComputeGroupMeta.BALANCE_WARM_UP_TASK_TIMEOUT);
+        
Assertions.assertFalse(computeGroup.getProperties().containsKey(CloudComputeGroupMeta.BALANCE_WARM_UP_TASK_TIMEOUT));
 
         computeGroup.modifyProperties(inputProperties);
         // 验证默认值被添加
-        
Assertions.assertTrue(computeGroup.getProperties().containsKey(ComputeGroup.BALANCE_WARM_UP_TASK_TIMEOUT));
-        
Assertions.assertEquals(String.valueOf(ComputeGroup.DEFAULT_BALANCE_WARM_UP_TASK_TIMEOUT),
-                
computeGroup.getProperties().get(ComputeGroup.BALANCE_WARM_UP_TASK_TIMEOUT));
+        
Assertions.assertTrue(computeGroup.getProperties().containsKey(CloudComputeGroupMeta.BALANCE_WARM_UP_TASK_TIMEOUT));
+        
Assertions.assertEquals(String.valueOf(CloudComputeGroupMeta.DEFAULT_BALANCE_WARM_UP_TASK_TIMEOUT),
+                
computeGroup.getProperties().get(CloudComputeGroupMeta.BALANCE_WARM_UP_TASK_TIMEOUT));
     }
 
     @Test
@@ -233,56 +234,56 @@ public class ComputeGroupTest {
 
     @Test
     public void testCheckPropertiesWithSyncCacheToWarmupCache() throws 
DdlException {
-        computeGroup.getProperties().put(ComputeGroup.BALANCE_TYPE, 
BalanceTypeEnum.SYNC_WARMUP.getValue());
+        computeGroup.getProperties().put(CloudComputeGroupMeta.BALANCE_TYPE, 
BalanceTypeEnum.SYNC_WARMUP.getValue());
         Map<String, String> inputProperties = Maps.newHashMap();
-        inputProperties.put(ComputeGroup.BALANCE_TYPE, 
BalanceTypeEnum.ASYNC_WARMUP.getValue());
+        inputProperties.put(CloudComputeGroupMeta.BALANCE_TYPE, 
BalanceTypeEnum.ASYNC_WARMUP.getValue());
         computeGroup.checkProperties(inputProperties);
     }
 
     @Test
     public void testValidateTimeoutRestrictionWithNoCurrentBalanceType() 
throws DdlException {
         // 测试当前没有设置balance_type的情况
-        computeGroup.getProperties().remove(ComputeGroup.BALANCE_TYPE);
+        
computeGroup.getProperties().remove(CloudComputeGroupMeta.BALANCE_TYPE);
         Map<String, String> inputProperties = Maps.newHashMap();
-        inputProperties.put(ComputeGroup.BALANCE_WARM_UP_TASK_TIMEOUT, "500");
+        
inputProperties.put(CloudComputeGroupMeta.BALANCE_WARM_UP_TASK_TIMEOUT, "500");
         computeGroup.checkProperties(inputProperties);
     }
 
     @Test
     public void testValidateTimeoutRestrictionWithCurrentWarmupCache() throws 
DdlException {
         // 测试当前balance_type是warmup_cache的情况
-        computeGroup.getProperties().put(ComputeGroup.BALANCE_TYPE, 
BalanceTypeEnum.ASYNC_WARMUP.getValue());
+        computeGroup.getProperties().put(CloudComputeGroupMeta.BALANCE_TYPE, 
BalanceTypeEnum.ASYNC_WARMUP.getValue());
         Map<String, String> inputProperties = Maps.newHashMap();
-        inputProperties.put(ComputeGroup.BALANCE_WARM_UP_TASK_TIMEOUT, "500");
+        
inputProperties.put(CloudComputeGroupMeta.BALANCE_WARM_UP_TASK_TIMEOUT, "500");
         computeGroup.checkProperties(inputProperties);
     }
 
     @Test
     public void testValidateTimeoutRestrictionWithDirectSwitchToWarmupCache() 
throws DdlException {
         // 测试从direct_switch转换到warmup_cache并设置timeout
-        computeGroup.getProperties().put(ComputeGroup.BALANCE_TYPE, 
BalanceTypeEnum.WITHOUT_WARMUP.getValue());
+        computeGroup.getProperties().put(CloudComputeGroupMeta.BALANCE_TYPE, 
BalanceTypeEnum.WITHOUT_WARMUP.getValue());
         Map<String, String> inputProperties = Maps.newHashMap();
-        inputProperties.put(ComputeGroup.BALANCE_TYPE, 
BalanceTypeEnum.ASYNC_WARMUP.getValue());
-        inputProperties.put(ComputeGroup.BALANCE_WARM_UP_TASK_TIMEOUT, "500");
+        inputProperties.put(CloudComputeGroupMeta.BALANCE_TYPE, 
BalanceTypeEnum.ASYNC_WARMUP.getValue());
+        
inputProperties.put(CloudComputeGroupMeta.BALANCE_WARM_UP_TASK_TIMEOUT, "500");
         computeGroup.checkProperties(inputProperties);
     }
 
     @Test
     public void 
testValidateTimeoutRestrictionWithSyncCacheToWarmupCacheWithTimeout() throws 
DdlException {
         // 测试从sync_cache转换到warmup_cache并设置timeout
-        computeGroup.getProperties().put(ComputeGroup.BALANCE_TYPE, 
BalanceTypeEnum.SYNC_WARMUP.getValue());
+        computeGroup.getProperties().put(CloudComputeGroupMeta.BALANCE_TYPE, 
BalanceTypeEnum.SYNC_WARMUP.getValue());
         Map<String, String> inputProperties = Maps.newHashMap();
-        inputProperties.put(ComputeGroup.BALANCE_TYPE, 
BalanceTypeEnum.ASYNC_WARMUP.getValue());
-        inputProperties.put(ComputeGroup.BALANCE_WARM_UP_TASK_TIMEOUT, "500");
+        inputProperties.put(CloudComputeGroupMeta.BALANCE_TYPE, 
BalanceTypeEnum.ASYNC_WARMUP.getValue());
+        
inputProperties.put(CloudComputeGroupMeta.BALANCE_WARM_UP_TASK_TIMEOUT, "500");
         computeGroup.checkProperties(inputProperties);
     }
 
     @Test
     public void testValidateTimeoutRestrictionWithDirectSwitchAndOnlyTimeout() 
{
         // 测试当前是direct_switch,仅设置timeout应该失败
-        computeGroup.getProperties().put(ComputeGroup.BALANCE_TYPE, 
BalanceTypeEnum.WITHOUT_WARMUP.getValue());
+        computeGroup.getProperties().put(CloudComputeGroupMeta.BALANCE_TYPE, 
BalanceTypeEnum.WITHOUT_WARMUP.getValue());
         Map<String, String> inputProperties = Maps.newHashMap();
-        inputProperties.put(ComputeGroup.BALANCE_WARM_UP_TASK_TIMEOUT, "500");
+        
inputProperties.put(CloudComputeGroupMeta.BALANCE_WARM_UP_TASK_TIMEOUT, "500");
 
         Assertions.assertThrows(DdlException.class, () -> {
             computeGroup.checkProperties(inputProperties);
@@ -292,9 +293,9 @@ public class ComputeGroupTest {
     @Test
     public void testValidateTimeoutRestrictionWithSyncCacheAndOnlyTimeout() {
         // 测试当前是sync_cache,仅设置timeout应该失败
-        computeGroup.getProperties().put(ComputeGroup.BALANCE_TYPE, 
BalanceTypeEnum.SYNC_WARMUP.getValue());
+        computeGroup.getProperties().put(CloudComputeGroupMeta.BALANCE_TYPE, 
BalanceTypeEnum.SYNC_WARMUP.getValue());
         Map<String, String> inputProperties = Maps.newHashMap();
-        inputProperties.put(ComputeGroup.BALANCE_WARM_UP_TASK_TIMEOUT, "500");
+        
inputProperties.put(CloudComputeGroupMeta.BALANCE_WARM_UP_TASK_TIMEOUT, "500");
 
         Assertions.assertThrows(DdlException.class, () -> {
             computeGroup.checkProperties(inputProperties);
@@ -304,10 +305,10 @@ public class ComputeGroupTest {
     @Test
     public void 
testValidateTimeoutRestrictionWithDirectSwitchToSyncCacheAndTimeout() {
         // 测试从direct_switch转换到sync_cache并设置timeout应该失败
-        computeGroup.getProperties().put(ComputeGroup.BALANCE_TYPE, 
BalanceTypeEnum.WITHOUT_WARMUP.getValue());
+        computeGroup.getProperties().put(CloudComputeGroupMeta.BALANCE_TYPE, 
BalanceTypeEnum.WITHOUT_WARMUP.getValue());
         Map<String, String> inputProperties = Maps.newHashMap();
-        inputProperties.put(ComputeGroup.BALANCE_TYPE, 
BalanceTypeEnum.SYNC_WARMUP.getValue());
-        inputProperties.put(ComputeGroup.BALANCE_WARM_UP_TASK_TIMEOUT, "500");
+        inputProperties.put(CloudComputeGroupMeta.BALANCE_TYPE, 
BalanceTypeEnum.SYNC_WARMUP.getValue());
+        
inputProperties.put(CloudComputeGroupMeta.BALANCE_WARM_UP_TASK_TIMEOUT, "500");
 
         Assertions.assertThrows(DdlException.class, () -> {
             computeGroup.checkProperties(inputProperties);
@@ -317,10 +318,10 @@ public class ComputeGroupTest {
     @Test
     public void 
testValidateTimeoutRestrictionWithDirectSwitchToSameAndTimeout() {
         // 测试从direct_switch转换到direct_switch并设置timeout应该失败
-        computeGroup.getProperties().put(ComputeGroup.BALANCE_TYPE, 
BalanceTypeEnum.WITHOUT_WARMUP.getValue());
+        computeGroup.getProperties().put(CloudComputeGroupMeta.BALANCE_TYPE, 
BalanceTypeEnum.WITHOUT_WARMUP.getValue());
         Map<String, String> inputProperties = Maps.newHashMap();
-        inputProperties.put(ComputeGroup.BALANCE_TYPE, 
BalanceTypeEnum.WITHOUT_WARMUP.getValue());
-        inputProperties.put(ComputeGroup.BALANCE_WARM_UP_TASK_TIMEOUT, "500");
+        inputProperties.put(CloudComputeGroupMeta.BALANCE_TYPE, 
BalanceTypeEnum.WITHOUT_WARMUP.getValue());
+        
inputProperties.put(CloudComputeGroupMeta.BALANCE_WARM_UP_TASK_TIMEOUT, "500");
 
         Assertions.assertThrows(DdlException.class, () -> {
             computeGroup.checkProperties(inputProperties);
@@ -330,7 +331,7 @@ public class ComputeGroupTest {
     @Test
     public void testValidateTimeoutRestrictionWithNoInputTimeout() throws 
DdlException {
         // 测试输入中没有timeout的情况
-        computeGroup.getProperties().put(ComputeGroup.BALANCE_TYPE, 
BalanceTypeEnum.WITHOUT_WARMUP.getValue());
+        computeGroup.getProperties().put(CloudComputeGroupMeta.BALANCE_TYPE, 
BalanceTypeEnum.WITHOUT_WARMUP.getValue());
         Map<String, String> inputProperties = Maps.newHashMap();
         inputProperties.put("other_property", "value");
         Assertions.assertThrows(DdlException.class, () -> {
diff --git 
a/fe/fe-core/src/test/java/org/apache/doris/cloud/catalog/CloudInstanceStatusCheckerTest.java
 
b/fe/fe-core/src/test/java/org/apache/doris/cloud/catalog/CloudInstanceStatusCheckerTest.java
index 95eb739de64..fe4060d2ab4 100644
--- 
a/fe/fe-core/src/test/java/org/apache/doris/cloud/catalog/CloudInstanceStatusCheckerTest.java
+++ 
b/fe/fe-core/src/test/java/org/apache/doris/cloud/catalog/CloudInstanceStatusCheckerTest.java
@@ -102,7 +102,7 @@ public class CloudInstanceStatusCheckerTest {
 
         new 
CloudInstanceStatusChecker(cloudSystemInfoService).runAfterCatalogReady();
 
-        ComputeGroup virtualComputeGroup = 
cloudSystemInfoService.getComputeGroupById("vcg_id");
+        CloudComputeGroupMeta virtualComputeGroup = 
cloudSystemInfoService.getComputeGroupById("vcg_id");
         Assertions.assertNotNull(virtualComputeGroup);
         Assertions.assertTrue(virtualComputeGroup.isVirtual());
         Assertions.assertEquals("vcg", virtualComputeGroup.getName());
@@ -129,17 +129,17 @@ public class CloudInstanceStatusCheckerTest {
         try (MockedStatic<CloudSystemInfoService> mockedCloudSystemInfoService 
=
                      Mockito.mockStatic(CloudSystemInfoService.class, 
Mockito.CALLS_REAL_METHODS)) {
             mockedCloudSystemInfoService.when(() -> 
CloudSystemInfoService.updateFileCacheJobIds(
-                    Mockito.any(ComputeGroup.class), 
Mockito.anyList())).thenAnswer(invocation -> null);
+                    Mockito.any(CloudComputeGroupMeta.class), 
Mockito.anyList())).thenAnswer(invocation -> null);
 
             new 
CloudInstanceStatusChecker(cloudSystemInfoService).runAfterCatalogReady();
             mockedCloudSystemInfoService.verify(() -> 
CloudSystemInfoService.updateFileCacheJobIds(
-                    Mockito.any(ComputeGroup.class), Mockito.anyList()));
+                    Mockito.any(CloudComputeGroupMeta.class), 
Mockito.anyList()));
         } finally {
             logger.removeAppender(appender);
             appender.stop();
         }
 
-        ComputeGroup virtualComputeGroup = 
cloudSystemInfoService.getComputeGroupById("vcg_id");
+        CloudComputeGroupMeta virtualComputeGroup = 
cloudSystemInfoService.getComputeGroupById("vcg_id");
         Assertions.assertNotNull(virtualComputeGroup);
         Assertions.assertTrue(virtualComputeGroup.isVirtual());
         Assertions.assertFalse(virtualComputeGroup.isNeedRebuildFileCache());
@@ -174,7 +174,7 @@ public class CloudInstanceStatusCheckerTest {
 
     private void addComputeGroup(String computeGroupId, String 
computeGroupName) {
         cloudSystemInfoService.addComputeGroup(computeGroupId,
-                new ComputeGroup(computeGroupId, computeGroupName, 
ComputeGroup.ComputeTypeEnum.COMPUTE));
+                new CloudComputeGroupMeta(computeGroupId, computeGroupName, 
CloudComputeGroupMeta.ComputeTypeEnum.COMPUTE));
     }
 
     private Cloud.GetInstanceResponse 
instanceResponseWithVirtualComputeGroup() {
diff --git 
a/fe/fe-core/src/test/java/org/apache/doris/cloud/system/CloudSystemInfoServiceTest.java
 
b/fe/fe-core/src/test/java/org/apache/doris/cloud/system/CloudSystemInfoServiceTest.java
index 83f62b351ee..28a4decd6be 100644
--- 
a/fe/fe-core/src/test/java/org/apache/doris/cloud/system/CloudSystemInfoServiceTest.java
+++ 
b/fe/fe-core/src/test/java/org/apache/doris/cloud/system/CloudSystemInfoServiceTest.java
@@ -19,8 +19,8 @@ package org.apache.doris.cloud.system;
 
 import org.apache.doris.analysis.UserIdentity;
 import org.apache.doris.catalog.Env;
+import org.apache.doris.cloud.catalog.CloudComputeGroupMeta;
 import org.apache.doris.cloud.catalog.CloudEnv;
-import org.apache.doris.cloud.catalog.ComputeGroup;
 import org.apache.doris.cloud.proto.Cloud;
 import org.apache.doris.cloud.rpc.MetaServiceProxy;
 import org.apache.doris.common.Config;
@@ -71,7 +71,7 @@ public class CloudSystemInfoServiceTest {
     //public void testGetPhysicalClusterEmptyVirtualCluster() {
     //    infoService = new CloudSystemInfoService();
     //    String vcgName = "v_cluster_1";
-    //    ComputeGroup vcg = new ComputeGroup("id1", vcgName, 
ComputeGroup.ComputeTypeEnum.VIRTUAL);
+    //    CloudComputeGroupMeta vcg = new CloudComputeGroupMeta("id1", 
vcgName, CloudComputeGroupMeta.ComputeTypeEnum.VIRTUAL);
     //    infoService.addComputeGroup(vcgName, vcg);
 
     //    String res = infoService.getPhysicalCluster(vcgName);
@@ -86,14 +86,14 @@ public class CloudSystemInfoServiceTest {
         String pcgName1 = "p_cluster_1";
         String pcgName2 = "p_cluster_2";
 
-        ComputeGroup vcg = new ComputeGroup("id1", vcgName, 
ComputeGroup.ComputeTypeEnum.VIRTUAL);
-        ComputeGroup.Policy policy = new ComputeGroup.Policy();
+        CloudComputeGroupMeta vcg = new CloudComputeGroupMeta("id1", vcgName, 
CloudComputeGroupMeta.ComputeTypeEnum.VIRTUAL);
+        CloudComputeGroupMeta.Policy policy = new 
CloudComputeGroupMeta.Policy();
         policy.setActiveComputeGroup(pcgName1);
         policy.setStandbyComputeGroup(pcgName2);
         vcg.setPolicy(policy);
 
-        ComputeGroup pcg1 = new ComputeGroup("id2", pcgName1, 
ComputeGroup.ComputeTypeEnum.COMPUTE);
-        ComputeGroup pcg2 = new ComputeGroup("id3", pcgName2, 
ComputeGroup.ComputeTypeEnum.COMPUTE);
+        CloudComputeGroupMeta pcg1 = new CloudComputeGroupMeta("id2", 
pcgName1, CloudComputeGroupMeta.ComputeTypeEnum.COMPUTE);
+        CloudComputeGroupMeta pcg2 = new CloudComputeGroupMeta("id3", 
pcgName2, CloudComputeGroupMeta.ComputeTypeEnum.COMPUTE);
         infoService.addComputeGroup(vcgName, vcg);
         infoService.addComputeGroup(pcgName1, pcg1);
         infoService.addComputeGroup(pcgName2, pcg2);
@@ -111,14 +111,14 @@ public class CloudSystemInfoServiceTest {
         String pcgName1 = "p_cluster_1";
         String pcgName2 = "p_cluster_2";
 
-        ComputeGroup vcg = new ComputeGroup("id1", vcgName, 
ComputeGroup.ComputeTypeEnum.VIRTUAL);
-        ComputeGroup.Policy policy = new ComputeGroup.Policy();
+        CloudComputeGroupMeta vcg = new CloudComputeGroupMeta("id1", vcgName, 
CloudComputeGroupMeta.ComputeTypeEnum.VIRTUAL);
+        CloudComputeGroupMeta.Policy policy = new 
CloudComputeGroupMeta.Policy();
         policy.setActiveComputeGroup(pcgName1);
         policy.setStandbyComputeGroup(pcgName2);
         vcg.setPolicy(policy);
 
-        ComputeGroup pcg1 = new ComputeGroup("id2", pcgName1, 
ComputeGroup.ComputeTypeEnum.COMPUTE);
-        ComputeGroup pcg2 = new ComputeGroup("id3", pcgName2, 
ComputeGroup.ComputeTypeEnum.COMPUTE);
+        CloudComputeGroupMeta pcg1 = new CloudComputeGroupMeta("id2", 
pcgName1, CloudComputeGroupMeta.ComputeTypeEnum.COMPUTE);
+        CloudComputeGroupMeta pcg2 = new CloudComputeGroupMeta("id3", 
pcgName2, CloudComputeGroupMeta.ComputeTypeEnum.COMPUTE);
         infoService.addComputeGroup(vcgName, vcg);
         infoService.addComputeGroup(pcgName1, pcg1);
         infoService.addComputeGroup(pcgName2, pcg2);
@@ -148,14 +148,14 @@ public class CloudSystemInfoServiceTest {
         String pcgName1 = "p_cluster_1";
         String pcgName2 = "p_cluster_2";
 
-        ComputeGroup vcg = new ComputeGroup("id1", vcgName, 
ComputeGroup.ComputeTypeEnum.VIRTUAL);
-        ComputeGroup.Policy policy = new ComputeGroup.Policy();
+        CloudComputeGroupMeta vcg = new CloudComputeGroupMeta("id1", vcgName, 
CloudComputeGroupMeta.ComputeTypeEnum.VIRTUAL);
+        CloudComputeGroupMeta.Policy policy = new 
CloudComputeGroupMeta.Policy();
         policy.setActiveComputeGroup(pcgName1);
         policy.setStandbyComputeGroup(pcgName2);
         vcg.setPolicy(policy);
 
-        ComputeGroup pcg1 = new ComputeGroup("id2", pcgName1, 
ComputeGroup.ComputeTypeEnum.COMPUTE);
-        ComputeGroup pcg2 = new ComputeGroup("id3", pcgName2, 
ComputeGroup.ComputeTypeEnum.COMPUTE);
+        CloudComputeGroupMeta pcg1 = new CloudComputeGroupMeta("id2", 
pcgName1, CloudComputeGroupMeta.ComputeTypeEnum.COMPUTE);
+        CloudComputeGroupMeta pcg2 = new CloudComputeGroupMeta("id3", 
pcgName2, CloudComputeGroupMeta.ComputeTypeEnum.COMPUTE);
         infoService.addComputeGroup(vcgName, vcg);
         infoService.addComputeGroup(pcgName1, pcg1);
         infoService.addComputeGroup(pcgName2, pcg2);
@@ -185,14 +185,14 @@ public class CloudSystemInfoServiceTest {
         String pcgName1 = "p_cluster_1";
         String pcgName2 = "p_cluster_2";
 
-        ComputeGroup vcg = new ComputeGroup("id1", vcgName, 
ComputeGroup.ComputeTypeEnum.VIRTUAL);
-        ComputeGroup.Policy policy = new ComputeGroup.Policy();
+        CloudComputeGroupMeta vcg = new CloudComputeGroupMeta("id1", vcgName, 
CloudComputeGroupMeta.ComputeTypeEnum.VIRTUAL);
+        CloudComputeGroupMeta.Policy policy = new 
CloudComputeGroupMeta.Policy();
         policy.setActiveComputeGroup(pcgName1);
         policy.setStandbyComputeGroup(pcgName2);
         vcg.setPolicy(policy);
 
-        ComputeGroup pcg1 = new ComputeGroup("id2", pcgName1, 
ComputeGroup.ComputeTypeEnum.COMPUTE);
-        ComputeGroup pcg2 = new ComputeGroup("id3", pcgName2, 
ComputeGroup.ComputeTypeEnum.COMPUTE);
+        CloudComputeGroupMeta pcg1 = new CloudComputeGroupMeta("id2", 
pcgName1, CloudComputeGroupMeta.ComputeTypeEnum.COMPUTE);
+        CloudComputeGroupMeta pcg2 = new CloudComputeGroupMeta("id3", 
pcgName2, CloudComputeGroupMeta.ComputeTypeEnum.COMPUTE);
         infoService.addComputeGroup(vcgName, vcg);
         infoService.addComputeGroup(pcgName1, pcg1);
         infoService.addComputeGroup(pcgName2, pcg2);
@@ -234,14 +234,14 @@ public class CloudSystemInfoServiceTest {
         String pcgName1 = "p_cluster_1";
         String pcgName2 = "p_cluster_2";
 
-        ComputeGroup vcg = new ComputeGroup("id1", vcgName, 
ComputeGroup.ComputeTypeEnum.VIRTUAL);
-        ComputeGroup.Policy policy = new ComputeGroup.Policy();
+        CloudComputeGroupMeta vcg = new CloudComputeGroupMeta("id1", vcgName, 
CloudComputeGroupMeta.ComputeTypeEnum.VIRTUAL);
+        CloudComputeGroupMeta.Policy policy = new 
CloudComputeGroupMeta.Policy();
         policy.setActiveComputeGroup(pcgName1);
         policy.setStandbyComputeGroup(pcgName2);
         vcg.setPolicy(policy);
 
-        ComputeGroup pcg1 = new ComputeGroup("id2", pcgName1, 
ComputeGroup.ComputeTypeEnum.COMPUTE);
-        ComputeGroup pcg2 = new ComputeGroup("id3", pcgName2, 
ComputeGroup.ComputeTypeEnum.COMPUTE);
+        CloudComputeGroupMeta pcg1 = new CloudComputeGroupMeta("id2", 
pcgName1, CloudComputeGroupMeta.ComputeTypeEnum.COMPUTE);
+        CloudComputeGroupMeta pcg2 = new CloudComputeGroupMeta("id3", 
pcgName2, CloudComputeGroupMeta.ComputeTypeEnum.COMPUTE);
         infoService.addComputeGroup(vcgName, vcg);
         infoService.addComputeGroup(pcgName1, pcg1);
         infoService.addComputeGroup(pcgName2, pcg2);
@@ -283,14 +283,14 @@ public class CloudSystemInfoServiceTest {
         String pcgName1 = "p_cluster_1";
         String pcgName2 = "p_cluster_2";
 
-        ComputeGroup vcg = new ComputeGroup(vcgId, vcgName, 
ComputeGroup.ComputeTypeEnum.VIRTUAL);
-        ComputeGroup.Policy policy = new ComputeGroup.Policy();
+        CloudComputeGroupMeta vcg = new CloudComputeGroupMeta(vcgId, vcgName, 
CloudComputeGroupMeta.ComputeTypeEnum.VIRTUAL);
+        CloudComputeGroupMeta.Policy policy = new 
CloudComputeGroupMeta.Policy();
         policy.setActiveComputeGroup(pcgName1);
         policy.setStandbyComputeGroup(pcgName2);
         policy.setUnhealthyNodeThresholdPercent(100);
         vcg.setPolicy(policy);
 
-        ComputeGroup pcg2 = new ComputeGroup("id3", pcgName2, 
ComputeGroup.ComputeTypeEnum.COMPUTE);
+        CloudComputeGroupMeta pcg2 = new CloudComputeGroupMeta("id3", 
pcgName2, CloudComputeGroupMeta.ComputeTypeEnum.COMPUTE);
         infoService.addComputeGroup(vcgId, vcg);
         infoService.clusterNameToId.put(pcgName1, "id2");
         infoService.addComputeGroup("id3", pcg2);
@@ -342,14 +342,14 @@ public class CloudSystemInfoServiceTest {
         String pcgName1 = "p_cluster_1";
         String pcgName2 = "p_cluster_2";
 
-        ComputeGroup vcg = new ComputeGroup("id1", vcgName, 
ComputeGroup.ComputeTypeEnum.VIRTUAL);
-        ComputeGroup.Policy policy = new ComputeGroup.Policy();
+        CloudComputeGroupMeta vcg = new CloudComputeGroupMeta("id1", vcgName, 
CloudComputeGroupMeta.ComputeTypeEnum.VIRTUAL);
+        CloudComputeGroupMeta.Policy policy = new 
CloudComputeGroupMeta.Policy();
         policy.setActiveComputeGroup(pcgName1);
         policy.setStandbyComputeGroup(pcgName2);
         vcg.setPolicy(policy);
 
-        ComputeGroup pcg1 = new ComputeGroup("id2", pcgName1, 
ComputeGroup.ComputeTypeEnum.COMPUTE);
-        ComputeGroup pcg2 = new ComputeGroup("id3", pcgName2, 
ComputeGroup.ComputeTypeEnum.COMPUTE);
+        CloudComputeGroupMeta pcg1 = new CloudComputeGroupMeta("id2", 
pcgName1, CloudComputeGroupMeta.ComputeTypeEnum.COMPUTE);
+        CloudComputeGroupMeta pcg2 = new CloudComputeGroupMeta("id3", 
pcgName2, CloudComputeGroupMeta.ComputeTypeEnum.COMPUTE);
         infoService.addComputeGroup(vcgName, vcg);
         infoService.addComputeGroup(pcgName1, pcg1);
         infoService.addComputeGroup(pcgName2, pcg2);
@@ -395,15 +395,15 @@ public class CloudSystemInfoServiceTest {
         String pcgName2 = "p_cluster_2";
         String pcgName3 = "p_cluster_3";
 
-        ComputeGroup vcg = new ComputeGroup("id1", vcgName, 
ComputeGroup.ComputeTypeEnum.VIRTUAL);
-        ComputeGroup.Policy policy = new ComputeGroup.Policy();
+        CloudComputeGroupMeta vcg = new CloudComputeGroupMeta("id1", vcgName, 
CloudComputeGroupMeta.ComputeTypeEnum.VIRTUAL);
+        CloudComputeGroupMeta.Policy policy = new 
CloudComputeGroupMeta.Policy();
         policy.setActiveComputeGroup(pcgName1);
         policy.setStandbyComputeGroup(pcgName2);
         vcg.setPolicy(policy);
 
-        ComputeGroup pcg1 = new ComputeGroup("id2", pcgName1, 
ComputeGroup.ComputeTypeEnum.COMPUTE);
-        ComputeGroup pcg2 = new ComputeGroup("id3", pcgName2, 
ComputeGroup.ComputeTypeEnum.COMPUTE);
-        ComputeGroup pcg3 = new ComputeGroup("id4", pcgName2, 
ComputeGroup.ComputeTypeEnum.COMPUTE);
+        CloudComputeGroupMeta pcg1 = new CloudComputeGroupMeta("id2", 
pcgName1, CloudComputeGroupMeta.ComputeTypeEnum.COMPUTE);
+        CloudComputeGroupMeta pcg2 = new CloudComputeGroupMeta("id3", 
pcgName2, CloudComputeGroupMeta.ComputeTypeEnum.COMPUTE);
+        CloudComputeGroupMeta pcg3 = new CloudComputeGroupMeta("id4", 
pcgName2, CloudComputeGroupMeta.ComputeTypeEnum.COMPUTE);
         infoService.addComputeGroup(vcgName, vcg);
         infoService.addComputeGroup(pcgName1, pcg1);
         infoService.addComputeGroup(pcgName2, pcg2);
@@ -427,7 +427,7 @@ public class CloudSystemInfoServiceTest {
         String clusterId = "test_cluster_id";
 
         // Mock an empty cluster (no backends)
-        ComputeGroup cg = new ComputeGroup(clusterId, clusterName, 
ComputeGroup.ComputeTypeEnum.COMPUTE);
+        CloudComputeGroupMeta cg = new CloudComputeGroupMeta(clusterId, 
clusterName, CloudComputeGroupMeta.ComputeTypeEnum.COMPUTE);
         infoService.addComputeGroup(clusterId, cg);
 
         // Set ConnectContext to select the cluster
@@ -449,7 +449,7 @@ public class CloudSystemInfoServiceTest {
         String clusterId = "test_cluster_id";
 
         // Setup cluster
-        ComputeGroup cg = new ComputeGroup(clusterId, clusterName, 
ComputeGroup.ComputeTypeEnum.COMPUTE);
+        CloudComputeGroupMeta cg = new CloudComputeGroupMeta(clusterId, 
clusterName, CloudComputeGroupMeta.ComputeTypeEnum.COMPUTE);
         infoService.addComputeGroup(clusterId, cg);
 
         // Add a backend with pipeline executor size = 8
@@ -483,7 +483,7 @@ public class CloudSystemInfoServiceTest {
         String clusterId = "test_cluster_id";
 
         // Setup cluster
-        ComputeGroup cg = new ComputeGroup(clusterId, clusterName, 
ComputeGroup.ComputeTypeEnum.COMPUTE);
+        CloudComputeGroupMeta cg = new CloudComputeGroupMeta(clusterId, 
clusterName, CloudComputeGroupMeta.ComputeTypeEnum.COMPUTE);
         infoService.addComputeGroup(clusterId, cg);
 
         // Add multiple backends with different pipeline executor sizes
@@ -534,7 +534,7 @@ public class CloudSystemInfoServiceTest {
         String clusterId = "test_cluster_id";
 
         // Setup cluster
-        ComputeGroup cg = new ComputeGroup(clusterId, clusterName, 
ComputeGroup.ComputeTypeEnum.COMPUTE);
+        CloudComputeGroupMeta cg = new CloudComputeGroupMeta(clusterId, 
clusterName, CloudComputeGroupMeta.ComputeTypeEnum.COMPUTE);
         infoService.addComputeGroup(clusterId, cg);
 
         // Add backends with zero and positive pipeline executor sizes
@@ -585,7 +585,7 @@ public class CloudSystemInfoServiceTest {
         String clusterId = "test_cluster_id";
 
         // Setup cluster
-        ComputeGroup cg = new ComputeGroup(clusterId, clusterName, 
ComputeGroup.ComputeTypeEnum.COMPUTE);
+        CloudComputeGroupMeta cg = new CloudComputeGroupMeta(clusterId, 
clusterName, CloudComputeGroupMeta.ComputeTypeEnum.COMPUTE);
         infoService.addComputeGroup(clusterId, cg);
 
         // Add backends with only zero or negative pipeline executor sizes
@@ -645,7 +645,7 @@ public class CloudSystemInfoServiceTest {
         String clusterId = "mixed_cluster_id";
 
         // Setup cluster
-        ComputeGroup cg = new ComputeGroup(clusterId, clusterName, 
ComputeGroup.ComputeTypeEnum.COMPUTE);
+        CloudComputeGroupMeta cg = new CloudComputeGroupMeta(clusterId, 
clusterName, CloudComputeGroupMeta.ComputeTypeEnum.COMPUTE);
         infoService.addComputeGroup(clusterId, cg);
 
         // Add backends with mixed valid and invalid pipeline executor sizes
@@ -708,7 +708,7 @@ public class CloudSystemInfoServiceTest {
         String clusterId = "large_cluster_id";
 
         // Setup cluster
-        ComputeGroup cg = new ComputeGroup(clusterId, clusterName, 
ComputeGroup.ComputeTypeEnum.COMPUTE);
+        CloudComputeGroupMeta cg = new CloudComputeGroupMeta(clusterId, 
clusterName, CloudComputeGroupMeta.ComputeTypeEnum.COMPUTE);
         infoService.addComputeGroup(clusterId, cg);
 
         // Add backends with large pipeline executor sizes
@@ -759,7 +759,7 @@ public class CloudSystemInfoServiceTest {
         String clusterId = "consistency_cluster_id";
 
         // Setup cluster
-        ComputeGroup cg = new ComputeGroup(clusterId, clusterName, 
ComputeGroup.ComputeTypeEnum.COMPUTE);
+        CloudComputeGroupMeta cg = new CloudComputeGroupMeta(clusterId, 
clusterName, CloudComputeGroupMeta.ComputeTypeEnum.COMPUTE);
         infoService.addComputeGroup(clusterId, cg);
 
         // Add backends with same pipeline executor sizes
@@ -800,11 +800,11 @@ public class CloudSystemInfoServiceTest {
         String cluster2Id = "cluster2_id";
 
         // Setup cluster1
-        ComputeGroup cg1 = new ComputeGroup(cluster1Id, cluster1Name, 
ComputeGroup.ComputeTypeEnum.COMPUTE);
+        CloudComputeGroupMeta cg1 = new CloudComputeGroupMeta(cluster1Id, 
cluster1Name, CloudComputeGroupMeta.ComputeTypeEnum.COMPUTE);
         infoService.addComputeGroup(cluster1Id, cg1);
 
         // Setup cluster2
-        ComputeGroup cg2 = new ComputeGroup(cluster2Id, cluster2Name, 
ComputeGroup.ComputeTypeEnum.COMPUTE);
+        CloudComputeGroupMeta cg2 = new CloudComputeGroupMeta(cluster2Id, 
cluster2Name, CloudComputeGroupMeta.ComputeTypeEnum.COMPUTE);
         infoService.addComputeGroup(cluster2Id, cg2);
 
         // Add backends to cluster1 with smaller pipeline executor sizes
@@ -872,20 +872,20 @@ public class CloudSystemInfoServiceTest {
         String otherClusterId = "other_cluster_id";
 
         // Setup virtual cluster
-        ComputeGroup virtualCg = new ComputeGroup(virtualClusterId, 
virtualClusterName,
-                ComputeGroup.ComputeTypeEnum.VIRTUAL);
-        ComputeGroup.Policy policy = new ComputeGroup.Policy();
+        CloudComputeGroupMeta virtualCg = new 
CloudComputeGroupMeta(virtualClusterId, virtualClusterName,
+                CloudComputeGroupMeta.ComputeTypeEnum.VIRTUAL);
+        CloudComputeGroupMeta.Policy policy = new 
CloudComputeGroupMeta.Policy();
         policy.setActiveComputeGroup(physicalClusterName);
         virtualCg.setPolicy(policy);
         infoService.addComputeGroup(virtualClusterId, virtualCg);
 
         // Setup physical cluster
-        ComputeGroup physicalCg = new ComputeGroup(physicalClusterId, 
physicalClusterName,
-                ComputeGroup.ComputeTypeEnum.COMPUTE);
+        CloudComputeGroupMeta physicalCg = new 
CloudComputeGroupMeta(physicalClusterId, physicalClusterName,
+                CloudComputeGroupMeta.ComputeTypeEnum.COMPUTE);
         infoService.addComputeGroup(physicalClusterId, physicalCg);
 
         // Setup other cluster
-        ComputeGroup otherCg = new ComputeGroup(otherClusterId, 
otherClusterName, ComputeGroup.ComputeTypeEnum.COMPUTE);
+        CloudComputeGroupMeta otherCg = new 
CloudComputeGroupMeta(otherClusterId, otherClusterName, 
CloudComputeGroupMeta.ComputeTypeEnum.COMPUTE);
         infoService.addComputeGroup(otherClusterId, otherCg);
 
         // Add backends to physical cluster
@@ -972,11 +972,11 @@ public class CloudSystemInfoServiceTest {
         String cluster2Id = "ctx_cluster2_id";
 
         // Setup cluster1
-        ComputeGroup cg1 = new ComputeGroup(cluster1Id, cluster1Name, 
ComputeGroup.ComputeTypeEnum.COMPUTE);
+        CloudComputeGroupMeta cg1 = new CloudComputeGroupMeta(cluster1Id, 
cluster1Name, CloudComputeGroupMeta.ComputeTypeEnum.COMPUTE);
         infoService.addComputeGroup(cluster1Id, cg1);
 
         // Setup cluster2
-        ComputeGroup cg2 = new ComputeGroup(cluster2Id, cluster2Name, 
ComputeGroup.ComputeTypeEnum.COMPUTE);
+        CloudComputeGroupMeta cg2 = new CloudComputeGroupMeta(cluster2Id, 
cluster2Name, CloudComputeGroupMeta.ComputeTypeEnum.COMPUTE);
         infoService.addComputeGroup(cluster2Id, cg2);
 
         // Add backends to cluster1 with smaller pipeline executor sizes
diff --git 
a/fe/fe-core/src/test/java/org/apache/doris/mysql/privilege/CloudAuthTest.java 
b/fe/fe-core/src/test/java/org/apache/doris/mysql/privilege/CloudAuthTest.java
index 31880402db5..1c8d739aeac 100644
--- 
a/fe/fe-core/src/test/java/org/apache/doris/mysql/privilege/CloudAuthTest.java
+++ 
b/fe/fe-core/src/test/java/org/apache/doris/mysql/privilege/CloudAuthTest.java
@@ -24,8 +24,8 @@ import org.apache.doris.analysis.UserIdentity;
 import org.apache.doris.catalog.AccessPrivilege;
 import org.apache.doris.catalog.AccessPrivilegeWithCols;
 import org.apache.doris.catalog.Env;
+import org.apache.doris.cloud.catalog.CloudComputeGroupMeta;
 import org.apache.doris.cloud.catalog.CloudEnv;
-import org.apache.doris.cloud.catalog.ComputeGroup;
 import org.apache.doris.cloud.system.CloudSystemInfoService;
 import org.apache.doris.common.AnalysisException;
 import org.apache.doris.nereids.parser.NereidsParser;
@@ -336,12 +336,12 @@ public class CloudAuthTest extends TestWithFeService {
         Assert.assertTrue(accessManager.checkCloudPriv(new 
UserIdentity("testUser", "%"), "vcg",
                 PrivPredicate.USAGE, ResourceTypeEnum.CLUSTER));
         // create vcg, sub cg(cg1, cg2), add to systemInfoService
-        ComputeGroup vcg  = new ComputeGroup("vcg_id", "vcg", 
ComputeGroup.ComputeTypeEnum.VIRTUAL);
+        CloudComputeGroupMeta vcg  = new CloudComputeGroupMeta("vcg_id", 
"vcg", CloudComputeGroupMeta.ComputeTypeEnum.VIRTUAL);
         vcg.setSubComputeGroups(Lists.newArrayList("cg2", "cg1"));
         systemInfoService.addComputeGroup("vcg_id", vcg);
-        ComputeGroup cg  = new ComputeGroup("vcg_id", "vcg", 
ComputeGroup.ComputeTypeEnum.COMPUTE);
+        CloudComputeGroupMeta cg  = new CloudComputeGroupMeta("vcg_id", "vcg", 
CloudComputeGroupMeta.ComputeTypeEnum.COMPUTE);
         systemInfoService.addComputeGroup("cg", cg);
-        ComputeGroup.Policy policy = new ComputeGroup.Policy();
+        CloudComputeGroupMeta.Policy policy = new 
CloudComputeGroupMeta.Policy();
         policy.setActiveComputeGroup("cg1");
         policy.setStandbyComputeGroup("cg2");
         vcg.setPolicy(policy);
diff --git 
a/fe/fe-core/src/test/java/org/apache/doris/nereids/trees/plans/commands/AlterComputeGroupCommandTest.java
 
b/fe/fe-core/src/test/java/org/apache/doris/nereids/trees/plans/commands/AlterComputeGroupCommandTest.java
index ce11d4ce7f7..dc5c595b77e 100644
--- 
a/fe/fe-core/src/test/java/org/apache/doris/nereids/trees/plans/commands/AlterComputeGroupCommandTest.java
+++ 
b/fe/fe-core/src/test/java/org/apache/doris/nereids/trees/plans/commands/AlterComputeGroupCommandTest.java
@@ -18,7 +18,7 @@
 package org.apache.doris.nereids.trees.plans.commands;
 
 import org.apache.doris.catalog.Env;
-import org.apache.doris.cloud.catalog.ComputeGroup;
+import org.apache.doris.cloud.catalog.CloudComputeGroupMeta;
 import org.apache.doris.cloud.system.CloudSystemInfoService;
 import org.apache.doris.common.Config;
 import org.apache.doris.common.DdlException;
@@ -113,7 +113,7 @@ public class AlterComputeGroupCommandTest extends 
TestWithFeService {
         Config.deploy_mode = "cloud";
 
         CloudSystemInfoService mockCloudSIS = 
Mockito.mock(CloudSystemInfoService.class);
-        ComputeGroup mockComputeGroup = Mockito.mock(ComputeGroup.class);
+        CloudComputeGroupMeta mockComputeGroup = 
Mockito.mock(CloudComputeGroupMeta.class);
         
Mockito.doReturn(mockComputeGroup).when(mockCloudSIS).getComputeGroupByName("virtual_group");
         Mockito.doReturn(true).when(mockComputeGroup).isVirtual();
         Deencapsulation.setField(env, "systemInfo", mockCloudSIS);
@@ -130,7 +130,7 @@ public class AlterComputeGroupCommandTest extends 
TestWithFeService {
         Config.deploy_mode = "cloud";
 
         CloudSystemInfoService mockCloudSIS = 
Mockito.mock(CloudSystemInfoService.class);
-        ComputeGroup mockComputeGroup = Mockito.mock(ComputeGroup.class);
+        CloudComputeGroupMeta mockComputeGroup = 
Mockito.mock(CloudComputeGroupMeta.class);
         
Mockito.doReturn(mockComputeGroup).when(mockCloudSIS).getComputeGroupByName("test_group");
         Mockito.doReturn(false).when(mockComputeGroup).isVirtual();
         Mockito.doThrow(new DdlException("Invalid 
property")).when(mockComputeGroup)
@@ -149,7 +149,7 @@ public class AlterComputeGroupCommandTest extends 
TestWithFeService {
         Config.deploy_mode = "cloud";
 
         CloudSystemInfoService mockCloudSIS = 
Mockito.mock(CloudSystemInfoService.class);
-        ComputeGroup mockComputeGroup = Mockito.mock(ComputeGroup.class);
+        CloudComputeGroupMeta mockComputeGroup = 
Mockito.mock(CloudComputeGroupMeta.class);
         
Mockito.doReturn(mockComputeGroup).when(mockCloudSIS).getComputeGroupByName("test_group");
         Mockito.doReturn(false).when(mockComputeGroup).isVirtual();
         
Mockito.doNothing().when(mockComputeGroup).checkProperties(Mockito.anyMap());


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to