Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
87 commits
Select commit Hold shift + click to select a range
4aa9008
<fix>[conf]: bump version to 5.4.10
liang-hanyu Jan 20, 2026
784c703
Merge branch '5.4.10' into '5.4.10'
Jan 20, 2026
1176758
<fix>[search]: fix zql field query total
Jun 24, 2026
4ef0c8f
<fix>[kvm]: force virtio driver for windows vhostuser nic
Jan 15, 2026
ada4787
<fix>[query]: limit API query concurrency
May 14, 2026
08177ca
Merge branch 'codex/ZSTAC-86417-5.4.10' into '5.4.10'
Jul 1, 2026
f25df0a
<fix>[gpu]: add gpu normalized model schema
AlanJager Jul 2, 2026
b5d630f
<fix>[search]: stabilize paginated query order
AlanJager Jul 2, 2026
dc86975
<fix>[kvm]: skip known systemd timeout on reconnect
May 11, 2026
e6d3189
<fix>[identity]: restrict APIQueryAccountMsg to admin-only in RBAC
gladtoseeu Jul 2, 2026
7e46fa5
<fix>[mn]: synchronize hash ring operations
AlanJager Jul 3, 2026
d2b599d
<fix>[externalStorage]: prevent split-brain on deactivate fail
PandaWuu Jul 3, 2026
b0ed121
<fix>[kvm]: defer orphaned skip tracing cleanup
PandaWuu Jul 3, 2026
7c4765f
Merge branch 'fix/5.4.10/ZSTAC-86350' into '5.4.10'
Jul 3, 2026
dadf250
<fix>[kvm]: disable arm vm pmu by default
gladtoseeu Jul 2, 2026
7bd28ad
Merge branch 'fix-86349' into '5.4.10'
Jul 3, 2026
42a035d
<fix>[loadBalancer]: block SLB deletion during grayscale upgrade
AlanJager Feb 13, 2026
3079c28
<fix>[virtualrouter]: configure dnsmasq query limits
ruansteve Jun 4, 2026
c9fbad0
<fix>[sugonSdn]: fix port sync plugin declaration
ruansteve May 21, 2026
43e3374
<fix>[sugonSdn]: sync tf ports after ping
May 21, 2026
31c9dbb
<fix>[sugonSdn]: adapt ping sync backport
Jun 30, 2026
16667ce
<fix>[sugonSdn]: address review comments
Jul 1, 2026
57209ea
<fix>[sdnController]: put sdn host crud in seperate queue
ruansteve Dec 22, 2025
f977724
<fix>[virtualRouterProvider]: change vrouter ip_local_port_range
ruansteve Jan 20, 2026
ab7f88e
Merge branch 'shixin-ZSTAC-86394' into '5.4.10'
Jul 4, 2026
e0476a9
Merge branch 'shixin-ZSTAC-86484@@2' into '5.4.10'
Jul 4, 2026
f5f2924
Merge branch 'shixin-ZSTAC-86501' into '5.4.10'
Jul 5, 2026
30e5a2a
Merge branch 'shixin-ZSTAC-86489@@3' into '5.4.10'
Jul 5, 2026
88f0030
Merge branch 'shixin-ZSTAC-86445' into '5.4.10'
Jul 5, 2026
d981c92
Merge branch 'fix/5.4.10/ZSTAC-86338@@3' into '5.4.10'
Jul 5, 2026
e5f4059
Merge branch 'shixin-ZSTAC-86470' into '5.4.10'
Jul 6, 2026
9e83867
Merge branch 'fix/ZSTAC-86475-5.4.10' into '5.4.10'
Jul 6, 2026
d997b64
Merge branch 'fix/ZSTAC-86476-5.4.10@@2' into '5.4.10'
Jul 6, 2026
adf11eb
<fix>[sdk]: update mdev candidates sdk
AlanJager Jul 6, 2026
7122b0c
Merge branch 'bugfix/ZSTAC-84636@@2' into '5.4.10'
Jul 6, 2026
473ad46
Merge branch 'bugfix/ZSTAC-86444-5.4.10' into '5.4.10'
Jul 6, 2026
e7037c6
Merge branch 'bugfix/ZSTAC-86294-5.4.10' into '5.4.10'
Jul 6, 2026
f3fd7fa
Merge branch 'backport/5.4.10/ZSTAC-86486-batch@@3' into '5.4.10'
Jul 6, 2026
6757ae7
<fix>[migration]: fix failed to start vm after ceph to ceph offline m…
Dec 22, 2025
dafd981
<fix>[sharedblock]: convert memory snapshot install path from absolut…
Nov 11, 2025
eabf476
<fix>[snapshot]: ZSTAC-61889 handle late snapshot success
May 17, 2026
04d48a4
<fix>[vm]: use max of virtual and actual size for root disk when no d…
AlanJager Feb 12, 2026
013dbea
<fix>[utils]: SshShell add ssh client timeouts
MaJin1996 May 14, 2026
203b822
<fix>[kvm]: bound host reachability check timeout
MaJin1996 May 28, 2026
43e485e
<fix>[storage]: Add a task to promptly check,update the latest status…
Mar 25, 2024
cda7d94
<fix>[storage]: trash top after storage live migration
MaJin1996 May 29, 2025
070a637
<fix>[core,kvm]: fix SSH session leak in CallBackNetworkChecker and K…
MaJin1996 Mar 19, 2026
643a40c
<fix>[primaryStorage]: validate ExternalPrimaryStorage config JSON at…
MaJin1996 Apr 28, 2026
a2071a3
Merge branch 'fix/ZSTAC-86497-5.4.10@@2' into '5.4.10'
Jul 7, 2026
4c2d3ab
<fix>[sdnController]: set lacp mode when change host
Dec 26, 2025
3de9afa
<fix>[eip]: fix EIP attach release race
Jun 2, 2026
0e1eb84
Merge branch '5.4.10' into '5.4.10'
Jul 7, 2026
4a6b97d
<fix>[portForwarding]: serialize rule creation
Jun 2, 2026
6e04633
<fix>[kvm]: drain stale http calls on agent restart
MaJin1996 May 18, 2026
af6b04b
<fix>[ceph]: release snapshot capacity without over-provisioning ratio
MaJin1996 Jul 6, 2026
e51bb82
Merge branch 'backport/5.4.10/ZSTAC-86342-batch@@3' into '5.4.10'
Jul 7, 2026
e09ce83
<fix>[zwatch]: VPC Router CPU alarm use external monitoring
Feb 4, 2026
4d9cbd8
Merge branch 'cherry-pick-ZSTAC-86418' into '5.4.10'
Jul 8, 2026
93bc8df
<fix>[sdnController]: attach dpdk vnic when vm stopped
Dec 11, 2025
af7a911
Merge branch 'codex/ZSTAC-86427-5.4.10' into '5.4.10'
Jul 8, 2026
6d4d226
Merge branch 'ZSTAC-86481@@2' into '5.4.10'
Jul 8, 2026
41ac4a0
Merge branch 'backport/5.4.10-jm@@4' into '5.4.10'
MaJin1996 Jul 8, 2026
825b45d
<fix>[xinfini]: fix ping addon info sync between mn
MaJin1996 Dec 11, 2025
e9084c6
Merge branch 'backport/5.4.10-ZSTAC-86469' into '5.4.10'
MaJin1996 Jul 9, 2026
7a4dd7e
Merge branch 'cherry-pick-ZSTAC-86448@@2' into '5.4.10'
Jul 10, 2026
e1a38d3
bump version to 5.4.12
Jul 10, 2026
b866d5c
<fix>[storage]: Set the actual image format for ExternalPrimaryStorage
Dec 24, 2025
34b61c7
<fix>[vm]: handle missing VM in StopVmGC
May 15, 2026
f6b93e0
<fix>[vm]: allow nullable stop not-found flag
May 18, 2026
bacad97
<fix>[zbs]: ensure heartbeat before host check
May 14, 2026
b2ac784
<fix>[sdnController]: add AddSdnControllerMsg
ruansteve Jan 15, 2026
dc33d7f
Merge branch 'codex/ZSTAC-86415-5.4.12@@2' into '5.4.12'
Jul 14, 2026
e6d9f59
<fix>[ha]: stabilize suspect host pre-fence flow
huhu0316 May 18, 2026
3845ee6
<fix>[ha]: create pre-fence tag in core
huhu0316 May 20, 2026
b894009
<fix>[ha]: require peer for pre-fence tag
huhu0316 May 28, 2026
9059e82
<fix>[compute]: avoid dual MN host tracking
Jul 3, 2026
af20614
Merge branch 'bugfix/ZSTAC-86365-5.4.10' into '5.4.12'
Jul 14, 2026
5c1bd39
Merge branch 'fix/ZSTAC-86494@@2' into '5.4.12'
Jul 14, 2026
c824066
Merge branch 'fix/ZSTAC-86395' into '5.4.12'
Jul 14, 2026
e1f99b2
Merge branch 'fix/ZSTAC-86440@@3' into '5.4.12'
Jul 14, 2026
ee01712
<fix>[zbs]: Try to reconnect after zbs ping failure
Jan 13, 2026
450bf57
<fix>[zbs]: Try to reconnect after all mds disconnected
Jan 28, 2026
b0d29e7
Merge branch 'fix/ZSTAC-86420' into '5.4.12'
Jul 14, 2026
a71fd09
<fix>[drs]: enlarge migration result column
liang-hanyu Jul 16, 2026
4662199
Merge branch 'cp/5.4.12/ZSTAC-84992-direct-pick-20260714@@3' into '5.…
Jul 16, 2026
53153f1
Merge branch 'fix-86507@@2' into '5.4.12'
Jul 16, 2026
a9091ff
<fix>[guesttools]: support emoji script output on 5.4.12
PandaWuu Jul 16, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion VERSION
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
MAJOR=5
MINOR=4
UPDATE=7
UPDATE=12
Original file line number Diff line number Diff line change
Expand Up @@ -251,6 +251,11 @@ public void cancel() {


public void trackHost(String hostUuid) {
if (!destMaker.isManagedByUs(hostUuid)) {
logger.debug(String.format("skip tracking host[uuid:%s], not managed by us", hostUuid));
return;
}

Tracker t = trackers.get(hostUuid);
if (t != null) {
t.cancel();
Expand Down
11 changes: 11 additions & 0 deletions compute/src/main/java/org/zstack/compute/vm/StopVmGC.java
Original file line number Diff line number Diff line change
Expand Up @@ -51,6 +51,7 @@ protected void triggerNow(GCCompletion completion) {
public void run(FlowTrigger trigger, Map data) {
StopVmOnHypervisorMsg msg = new StopVmOnHypervisorMsg();
msg.setVmInventory(inventory);
msg.setIgnoreNotFoundError(true);
bus.makeTargetServiceIdByResourceUuid(msg, HostConstant.SERVICE_ID, hostUuid);
bus.send(msg, new CloudBusCallBack(trigger) {
@Override
Expand All @@ -66,6 +67,16 @@ public void run(MessageReply reply) {
}).then(new NoRollbackFlow() {
@Override
public void run(FlowTrigger trigger, Map data) {
String vmHostUuid = Q.New(VmInstanceVO.class).select(VmInstanceVO_.hostUuid)
.eq(VmInstanceVO_.uuid, inventory.getUuid()).findValue();
if (!hostUuid.equals(vmHostUuid)) {
logger.debug(String.format("skip changing vm[uuid:%s] state to stopped after StopVmGC, " +
"current host[uuid:%s] is not gc host[uuid:%s]", inventory.getUuid(),
vmHostUuid, hostUuid));
trigger.next();
return;
}

ChangeVmStateMsg cmsg = new ChangeVmStateMsg();
cmsg.setVmInstanceUuid(inventory.getUuid());
cmsg.setStateEvent(VmInstanceStateEvent.stopped.toString());
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -52,6 +52,10 @@ public class VmGlobalConfig {
@GlobalConfigValidation(validValues = {"true", "false"})
@BindResourceConfig(value = {VmInstanceVO.class})
public static GlobalConfig VM_PORT_OFF = new GlobalConfig(CATEGORY, "vmPortOff");
@GlobalConfigDef(defaultValue = "false", type = Boolean.class, description = "enable PMU for VM, disabled by default on aarch64 to avoid Kunpeng-920 kernel panic")
@GlobalConfigValidation(validValues = {"true", "false"})
@BindResourceConfig(value = {VmInstanceVO.class, ClusterVO.class})
public static GlobalConfig VM_PMU = new GlobalConfig(CATEGORY, "vm.pmu");
@GlobalConfigValidation(validValues = {"true", "false"})
@BindResourceConfig(value = {VmInstanceVO.class, ClusterVO.class})
public static GlobalConfig EMULATE_HYPERV = new GlobalConfig(CATEGORY, "emulateHyperV");
Expand Down
28 changes: 25 additions & 3 deletions compute/src/main/java/org/zstack/compute/vm/VmInstanceBase.java
Original file line number Diff line number Diff line change
Expand Up @@ -928,6 +928,7 @@ private void getStartingCandidateHosts(final NeedReplyMessage msg, final ReturnV
amsg.setL3NetworkUuids(VmNicHelper.getL3Uuids(VmNicInventory.valueOf(self.getVmNics())));
amsg.setDryRun(true);
amsg.setListAllHosts(true);
amsg.setAllowNoL3Networks(true);

bus.send(amsg, new CloudBusCallBack(completion) {
@Override
Expand Down Expand Up @@ -1004,16 +1005,38 @@ public void done(ErrorCodeList errorCodeList) {

logger.debug(String.format("HaStartVmJudger[%s] says the VM[uuid:%s, name:%s] is qualified for HA start, now we are starting it",
judger.getClass(), self.getUuid(), self.getName()));
String hostUuid = self.getHostUuid();
String suspectHostUuid = StringUtils.trimToNull(hostUuid);
String peerHostUuid = StringUtils.trimToNull(msg.getAccessiblePeerHostUuid());
UpdateQuery sql = SQL.New(VmInstanceVO.class)
.eq(VmInstanceVO_.uuid, self.getUuid())
.set(VmInstanceVO_.state, VmInstanceState.Stopped)
.set(VmInstanceVO_.hostUuid, null);

if (self.getHostUuid() != null) {
sql.set(VmInstanceVO_.lastHostUuid, self.getHostUuid());
if (hostUuid != null) {
sql.set(VmInstanceVO_.lastHostUuid, hostUuid);
}

sql.update();
refreshVO();
if (suspectHostUuid == null) {
logger.debug(String.format("HA-start vm[%s]: skip creating pre-fence tag because suspect host is absent",
self.getUuid()));
} else if (peerHostUuid == null) {
logger.debug(String.format("HA-start vm[%s]: skip creating pre-fence tag because peer host is absent",
self.getUuid()));
} else {
Map<String, String> tokens = new HashMap<>();
tokens.put(VmSystemTags.HA_PRE_FENCE_SUSPECT_HOST_UUID_TOKEN, suspectHostUuid);
tokens.put(VmSystemTags.HA_PRE_FENCE_ACCESSIBLE_PEER_HOST_UUID_TOKEN, peerHostUuid);

SystemTagCreator creator = VmSystemTags.HA_PRE_FENCE_PENDING.newSystemTagCreator(self.getUuid());
creator.inherent = true;
creator.recreate = true;
creator.ignoreIfExisting = true;
creator.setTagByTokens(tokens);
creator.create();
}

startVm(msg, new Completion(msg, chain) {
@Override
Expand Down Expand Up @@ -8984,4 +9007,3 @@ public void run(MessageReply reply) {
});
}
}

Original file line number Diff line number Diff line change
Expand Up @@ -5,17 +5,26 @@
import org.springframework.beans.factory.annotation.Configurable;
import org.zstack.core.cloudbus.CloudBus;
import org.zstack.core.cloudbus.CloudBusCallBack;
import org.zstack.core.asyncbatch.While;
import org.zstack.core.componentloader.PluginRegistry;
import org.zstack.core.workflow.FlowChainBuilder;
import org.zstack.header.core.Completion;
import org.zstack.header.core.WhileDoneCompletion;
import org.zstack.header.core.workflow.Flow;
import org.zstack.header.core.workflow.FlowChain;
import org.zstack.header.core.workflow.FlowDoneHandler;
import org.zstack.header.core.workflow.FlowErrorHandler;
import org.zstack.header.core.workflow.FlowRollback;
import org.zstack.header.core.workflow.FlowTrigger;
import org.zstack.header.core.workflow.NoRollbackFlow;
import org.zstack.header.errorcode.ErrorCode;
import org.zstack.header.errorcode.ErrorCodeList;
import org.zstack.header.host.HostConstant;
import org.zstack.header.message.MessageReply;
import org.zstack.header.vm.*;
import org.zstack.utils.Utils;
import org.zstack.utils.logging.CLogger;

import java.util.List;
import java.util.Map;
@Configurable(preConstruction = true, autowire = Autowire.BY_TYPE)
public class VmStartOnHypervisorFlow implements Flow {
Expand All @@ -26,34 +35,68 @@ public class VmStartOnHypervisorFlow implements Flow {
@Autowired
private PluginRegistry pluginRgty;

private final List<VmBeforeStartOnHypervisorExtensionPoint> exts = pluginRgty.getExtensionList(VmBeforeStartOnHypervisorExtensionPoint.class);;

private void fireExtensions(VmInstanceSpec spec) {
for (VmBeforeStartOnHypervisorExtensionPoint ext : exts) {
ext.beforeStartVmOnHypervisor(spec);
}
}

@Override
public void run(final FlowTrigger chain, final Map data) {
final VmInstanceSpec spec = (VmInstanceSpec) data.get(VmInstanceConstant.Params.VmInstanceSpec.toString());
FlowChain fchain = FlowChainBuilder.newSimpleFlowChain();
fchain.setName(String.format("vm-start-on-hypervisor-vm-%s", spec.getVmInventory().getUuid()));
fchain.then(new NoRollbackFlow() {
@Override
public void run(FlowTrigger trigger, Map d) {
new While<>(pluginRgty.getExtensionList(VmBeforeStartOnHypervisorExtensionPoint.class))
.each((ext, comp) -> ext.beforeStartVmOnHypervisor(spec, new Completion(comp) {
@Override
public void success() {
comp.done();
}

fireExtensions(spec);

StartVmOnHypervisorMsg msg = new StartVmOnHypervisorMsg();
msg.setVmSpec(spec);
bus.makeTargetServiceIdByResourceUuid(msg, HostConstant.SERVICE_ID, spec.getDestHost().getUuid());
bus.send(msg, new CloudBusCallBack(chain) {
@Override
public void fail(ErrorCode errorCode) {
comp.addError(errorCode);
comp.done();
}
})).run(new WhileDoneCompletion(trigger) {
@Override
public void done(ErrorCodeList errorCodeList) {
if (errorCodeList.getCauses().size() > 0) {
trigger.fail(errorCodeList.getCauses().get(0));
} else {
trigger.next();
}
}
});
}
});
fchain.then(new NoRollbackFlow() {
@Override
public void run(MessageReply reply) {
if (reply.isSuccess()) {
data.put(VmStartOnHypervisorFlow.class.getName(), true);
chain.next();
} else {
chain.fail(reply.getError());
}
public void run(FlowTrigger trigger, Map d) {
StartVmOnHypervisorMsg msg = new StartVmOnHypervisorMsg();
msg.setVmSpec(spec);
bus.makeTargetServiceIdByResourceUuid(msg, HostConstant.SERVICE_ID, spec.getDestHost().getUuid());
bus.send(msg, new CloudBusCallBack(trigger) {
@Override
public void run(MessageReply reply) {
if (reply.isSuccess()) {
data.put(VmStartOnHypervisorFlow.class.getName(), true);
trigger.next();
} else {
trigger.fail(reply.getError());
}
}
});
}
});
fchain.done(new FlowDoneHandler(chain) {
@Override
public void handle(Map d) {
chain.next();
}
}).error(new FlowErrorHandler(chain) {
@Override
public void handle(ErrorCode errCode, Map d) {
chain.fail(errCode);
}
}).start();
}

@Override
Expand Down
7 changes: 7 additions & 0 deletions compute/src/main/java/org/zstack/compute/vm/VmSystemTags.java
Original file line number Diff line number Diff line change
Expand Up @@ -310,4 +310,11 @@ public String desensitizeTag(SystemTag systemTag, String tag) {
public static PatternedSystemTag VM_STATE_PAUSED_AFTER_MIGRATE = new PatternedSystemTag(("vmPausedAfterMigrate"), VmInstanceVO.class);

public static PatternedSystemTag VM_MEMORY_ACCESS_MODE_SHARED = new PatternedSystemTag(("vmMemoryAccessModeShared"), VmInstanceVO.class);

public static String HA_PRE_FENCE_SUSPECT_HOST_UUID_TOKEN = "suspectHostUuid";
public static String HA_PRE_FENCE_ACCESSIBLE_PEER_HOST_UUID_TOKEN = "accessiblePeerHostUuid";
public static PatternedSystemTag HA_PRE_FENCE_PENDING =
new PatternedSystemTag(String.format("haPreFencePending::{%s}::{%s}",
HA_PRE_FENCE_SUSPECT_HOST_UUID_TOKEN,
HA_PRE_FENCE_ACCESSIBLE_PEER_HOST_UUID_TOKEN), VmInstanceVO.class);
}
20 changes: 20 additions & 0 deletions conf/db/upgrade/V5.4.10__schema.sql
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
-- ZSTAC-86476: Add normalizedModelName column for GPU spec dedup
CALL ADD_COLUMN('GpuDeviceSpecVO', 'normalizedModelName', 'VARCHAR(255)', 1, NULL);
CALL CREATE_INDEX('GpuDeviceSpecVO', 'idx_gpu_spec_normalized_model', 'normalizedModelName');

UPDATE VolumeSnapshotVO AS sp, PrimaryStorageVO AS ps
SET sp.primaryStorageInstallPath = REPLACE(sp.primaryStorageInstallPath, '/dev/', 'sharedblock://')
WHERE sp.primaryStorageUuid = ps.uuid AND ps.type = 'SharedBlock' AND sp.volumeType = 'Memory' AND sp.primaryStorageInstallPath LIKE '/dev/%';

UPDATE `zstack`.`ActiveAlarmTemplateVO`
SET `metricName` = 'CPUUsedUtilization'
WHERE `uuid` = 'c9e6cdca107140bea62b4ca919ff9e88'
AND `metricName` = 'VRouterCPUAverageUsedUtilization';

UPDATE `zstack`.`AlarmVO`
SET `metricName` = 'CPUUsedUtilization'
WHERE `uuid` IN (
SELECT `alarmUuid` FROM `zstack`.`ActiveAlarmVO`
WHERE `templateUuid` = 'c9e6cdca107140bea62b4ca919ff9e88'
)
AND `metricName` = 'VRouterCPUAverageUsedUtilization';
7 changes: 7 additions & 0 deletions conf/db/upgrade/V5.4.12__schema.sql
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
ALTER TABLE `zstack`.`DRSVmMigrationActivityVO` MODIFY COLUMN `result` TEXT DEFAULT NULL;

ALTER TABLE `GuestVmScriptExecutedRecordDetailVO`
MODIFY `stdout` MEDIUMTEXT CHARACTER SET `utf8mb4` COLLATE `utf8mb4_unicode_ci`;

ALTER TABLE `GuestVmScriptExecutedRecordDetailVO`
MODIFY `stderr` MEDIUMTEXT CHARACTER SET `utf8mb4` COLLATE `utf8mb4_unicode_ci`;
14 changes: 14 additions & 0 deletions conf/globalConfig/virutalRouter.xml
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,20 @@
<category>virtualRouter</category>
<type>java.lang.Integer</type>
</config>
<config>
<name>dnsmasq.dnsForwardMax</name>
<description>The maximum number of concurrent DNS queries forwarded by dnsmasq on a virtual router.</description>
<defaultValue>1000</defaultValue>
<category>virtualRouter</category>
<type>java.lang.Integer</type>
</config>
<config>
<name>dnsmasq.cacheSize</name>
<description>The DNS cache size used by dnsmasq on a virtual router.</description>
<defaultValue>10000</defaultValue>
<category>virtualRouter</category>
<type>java.lang.Integer</type>
</config>
<config>
<name>ping.interval</name>
<description>The interval management nodes ping the virtual router agents running virtual router VMs, in seconds</description>
Expand Down
1 change: 1 addition & 0 deletions conf/serviceConfig/externalPrimaryStorage.xml
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<service xmlns="http://zstack.org/schema/zstack">
<id>storage.primary</id>
<interceptor>PrimaryStorageApiInterceptor</interceptor>

<message>
<name>org.zstack.header.storage.addon.primary.APIUpdateExternalPrimaryStorageMsg</name>
Expand Down
6 changes: 1 addition & 5 deletions conf/springConfigXml/sugonSdnController.xml
Original file line number Diff line number Diff line change
Expand Up @@ -67,11 +67,7 @@
</zstack:plugin>
</bean>

<bean id="TfZstackPortSync" class="org.zstack.sugonSdnController.network.TfZstackPortSync">
<zstack:plugin>
<zstack:extension interface="org.zstack.header.managementnode.ManagementNodeReadyExtensionPoint" />
</zstack:plugin>
</bean>
<bean id="TfZstackPortSync" class="org.zstack.sugonSdnController.network.TfZstackPortSync" />

<bean id="SugonApiInterceptor" class="org.zstack.sugonSdnController.header.SugonApiInterceptor">
<zstack:plugin>
Expand Down
1 change: 1 addition & 0 deletions conf/springConfigXml/volumeSnapshot.xml
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@
<zstack:extension interface="org.zstack.header.volume.OverwriteVolumeExtensionPoint"/>
<zstack:extension interface="org.zstack.header.volume.FlattenVolumeExtensionPoint"/>
<zstack:extension interface="org.zstack.header.storage.backup.CleanUpVmBackupExtensionPoint"/>
<zstack:extension interface="org.zstack.header.storage.snapshot.VolumeSnapshotDBSyncExtensionPoint"/>
</zstack:plugin>
</bean>

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -71,6 +71,8 @@ public ErrorCode stopAnsible() {
return useNcatAndNmapToTestConnection(ssh);
} catch (SshException e) {
return operr(e.getMessage());
} finally {
ssh.close();
}
}

Expand Down
Loading