|
20 | 20 | import org.zstack.header.host.HostInventory; |
21 | 21 | import org.zstack.header.host.HostVO; |
22 | 22 | import org.zstack.header.message.MessageReply; |
23 | | -import org.zstack.header.storage.addon.primary.BaseVolumeInfo; |
24 | | -import org.zstack.header.storage.addon.primary.HeartbeatVolumeTO; |
25 | | -import org.zstack.header.storage.addon.primary.HeartbeatVolumeTopology; |
26 | | -import org.zstack.header.storage.addon.primary.PrimaryStorageNodeSvc; |
| 23 | +import org.zstack.header.storage.addon.primary.*; |
| 24 | +import org.zstack.storage.addon.primary.ExternalHostIdGetter; |
27 | 25 | import org.zstack.header.vm.VmInstanceInventory; |
28 | 26 | import org.zstack.header.vm.VmInstanceMigrateExtensionPoint; |
29 | 27 | import org.zstack.header.vm.VmInstanceSpec; |
|
38 | 36 | import org.zstack.kvm.*; |
39 | 37 | import org.zstack.storage.addon.primary.ExternalPrimaryStorageFactory; |
40 | 38 | import org.zstack.utils.DebugUtils; |
| 39 | +import org.zstack.utils.Utils; |
| 40 | +import org.zstack.utils.logging.CLogger; |
41 | 41 |
|
42 | 42 | import java.util.ArrayList; |
43 | 43 | import java.util.List; |
|
49 | 49 | public class KvmIscsiNodeServer implements Component, KVMStartVmExtensionPoint, VmInstanceMigrateExtensionPoint, |
50 | 50 | KVMConvertVolumeExtensionPoint, KVMDetachVolumeExtensionPoint, KVMAttachVolumeExtensionPoint, |
51 | 51 | KVMPreAttachIsoExtensionPoint, KvmSetupSelfFencerExtensionPoint { |
| 52 | + private static final CLogger logger = Utils.getLogger(KvmIscsiNodeServer.class); |
| 53 | + |
52 | 54 | @Autowired |
53 | 55 | private ExternalPrimaryStorageFactory extPsFactory; |
54 | 56 |
|
@@ -235,13 +237,24 @@ public void fail(ErrorCode errorCode) { |
235 | 237 |
|
236 | 238 | @Override |
237 | 239 | public void run(FlowTrigger trigger, Map data) { |
| 240 | + ExternalPrimaryStorageHostRefVO ref = Q.New(ExternalPrimaryStorageHostRefVO.class) |
| 241 | + .eq(ExternalPrimaryStorageHostRefVO_.hostUuid, param.getHostUuid()) |
| 242 | + .eq(ExternalPrimaryStorageHostRefVO_.primaryStorageUuid, param.getPrimaryStorage().getUuid()) |
| 243 | + .find(); |
| 244 | + if (ref == null || ref.getHostId() == 0) { |
| 245 | + logger.warn(String.format("not found hostId for hostUuid[%s] and primaryStorageUuid[%s]", |
| 246 | + param.getHostUuid(), param.getPrimaryStorage().getUuid())); |
| 247 | + ref = new ExternalHostIdGetter(999).getOrAllocateHostIdRef( |
| 248 | + param.getHostUuid(), param.getPrimaryStorage().getUuid()); |
| 249 | + } |
| 250 | + |
238 | 251 | KvmSetupSelfFencerCmd cmd = new KvmSetupSelfFencerCmd(); |
239 | 252 | cmd.interval = param.getInterval(); |
240 | 253 | cmd.maxAttempts = param.getMaxAttempts(); |
241 | 254 | cmd.coveringPaths = heartbeatVol.getCoveringPaths(); |
242 | 255 | cmd.heartbeatUrl = heartbeatVol.getInstallPath(); |
243 | 256 | cmd.storageCheckerTimeout = param.getStorageCheckerTimeout(); |
244 | | - cmd.hostId = heartbeatVol.getHostId(); |
| 257 | + cmd.hostId = ref.getHostId(); |
245 | 258 | cmd.heartbeatRequiredSpace = heartbeatVol.getHeartbeatRequiredSpace(); |
246 | 259 | cmd.hostUuid = param.getHostUuid(); |
247 | 260 | cmd.strategy = param.getStrategy(); |
|
0 commit comments