Skip to content

Commit 34bceb1

Browse files
author
gitlab
committed
Merge branch 'fix/ZSTAC-78989' into '5.5.12'
<fix>[loadBalancer]: block SLB deletion during grayscale upgrade See merge request zstackio/zstack!9187
2 parents 72ce6ef + f19223a commit 34bceb1

1 file changed

Lines changed: 13 additions & 0 deletions

File tree

plugin/loadBalancer/src/main/java/org/zstack/network/service/lb/LoadBalancerApiInterceptor.java

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@
3939
import org.zstack.network.service.vip.VipVO_;
4040
import org.zstack.tag.PatternedSystemTag;
4141
import org.zstack.tag.TagManager;
42+
import org.zstack.core.upgrade.UpgradeGlobalConfig;
4243
import org.zstack.utils.*;
4344
import org.zstack.utils.function.ForEachFunction;
4445
import org.zstack.utils.logging.CLogger;
@@ -152,10 +153,22 @@ public APIMessage intercept(APIMessage msg) throws ApiMessageInterceptionExcepti
152153
validate((APIGetCandidateVmNicsForLoadBalancerServerGroupMsg)msg);
153154
} else if (msg instanceof APIChangeLoadBalancerBackendServerMsg) {
154155
validate((APIChangeLoadBalancerBackendServerMsg)msg);
156+
} else if (msg instanceof APIDeleteLoadBalancerMsg) {
157+
validate((APIDeleteLoadBalancerMsg) msg);
155158
}
156159
return msg;
157160
}
158161

162+
private void validate(APIDeleteLoadBalancerMsg msg) {
163+
if (UpgradeGlobalConfig.GRAYSCALE_UPGRADE.value(Boolean.class)) {
164+
LoadBalancerVO lb = dbf.findByUuid(msg.getUuid(), LoadBalancerVO.class);
165+
if (lb != null && lb.getType() == LoadBalancerType.SLB) {
166+
throw new ApiMessageInterceptionException(argerr(
167+
"cannot delete the standalone load balancer[uuid:%s] during grayscale upgrade", msg.getUuid()));
168+
}
169+
}
170+
}
171+
159172
private void validate(APIDeleteAccessControlListMsg msg) {
160173
/*List<String> refs = Q.New(LoadBalancerListenerACLRefVO.class).select(LoadBalancerListenerACLRefVO_.listenerUuid)
161174
.eq(LoadBalancerListenerACLRefVO_.aclUuid, msg.getUuid()).isNull(LoadBalancerListenerACLRefVO_.serverGroupUuid).listValues();

0 commit comments

Comments
 (0)