Skip to content

Commit 457a840

Browse files
author
gitlab
committed
Merge branch '10543' into 'master'
Fixes ZSTAC-10543 Closes ZSTAC-10543 See merge request zstackio/zstack!2417
2 parents 68f077a + 71e44ae commit 457a840

1 file changed

Lines changed: 37 additions & 0 deletions

File tree

plugin/kvm/src/main/java/org/zstack/kvm/KVMHost.java

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2488,16 +2488,19 @@ private boolean noStorageAccessible(){
24882488
private void createHostVersionSystemTags(String distro, String release, String version) {
24892489
SystemTagCreator creator = HostSystemTags.OS_DISTRIBUTION.newSystemTagCreator(self.getUuid());
24902490
creator.inherent = true;
2491+
creator.recreate = true;
24912492
creator.setTagByTokens(map(e(HostSystemTags.OS_DISTRIBUTION_TOKEN, distro)));
24922493
creator.create();
24932494

24942495
creator = HostSystemTags.OS_RELEASE.newSystemTagCreator(self.getUuid());
24952496
creator.inherent = true;
2497+
creator.recreate = true;
24962498
creator.setTagByTokens(map(e(HostSystemTags.OS_RELEASE_TOKEN, release)));
24972499
creator.create();
24982500

24992501
creator = HostSystemTags.OS_VERSION.newSystemTagCreator(self.getUuid());
25002502
creator.inherent = true;
2503+
creator.recreate = true;
25012504
creator.setTagByTokens(map(e(HostSystemTags.OS_VERSION_TOKEN, version)));
25022505
creator.create();
25032506
}
@@ -2967,6 +2970,40 @@ public void fail(ErrorCode errorCode) {
29672970
}
29682971
});
29692972

2973+
flow(new NoRollbackFlow() {
2974+
String __name__ = "ansbile-update-kvm-host-facts";
2975+
2976+
@Override
2977+
public void run(FlowTrigger trigger, Map data) {
2978+
String privKeyFile = PathUtil.findFileOnClassPath(AnsibleConstant.RSA_PRIVATE_KEY).getAbsolutePath();
2979+
ShellResult ret = ShellUtils.runAndReturn(String.format("ansible -i %s --private-key %s -m setup -a filter=ansible_distribution* %s -e 'ansible_ssh_port=%d ansible_ssh_user=%s'",
2980+
AnsibleConstant.INVENTORY_FILE, privKeyFile, self.getManagementIp(), getSelf().getPort(), getSelf().getUsername()), AnsibleConstant.ROOT_DIR);
2981+
if (!ret.isReturnCode(0)) {
2982+
trigger.fail(operr("unable to get kvm host[uuid:%s, ip:%s] facts by ansible\n%s", self.getUuid(), self.getManagementIp(), ret.getExecutionLog()));
2983+
return;
2984+
}
2985+
2986+
String[] pairs = ret.getStdout().split(">>");
2987+
if (pairs.length != 2) {
2988+
trigger.fail(operr("unrecognized ansible facts mediaType, %s", ret.getStdout()));
2989+
return;
2990+
}
2991+
2992+
LinkedHashMap output = JSONObjectUtil.toObject(pairs[1], LinkedHashMap.class);
2993+
LinkedHashMap facts = (LinkedHashMap) output.get("ansible_facts");
2994+
if (facts == null) {
2995+
trigger.fail(operr("unrecognized ansible facts mediaType, cannot find field 'ansible_facts', %s", ret.getStdout()));
2996+
return;
2997+
}
2998+
2999+
String distro = (String) facts.get("ansible_distribution");
3000+
String release = (String) facts.get("ansible_distribution_release");
3001+
String version = (String) facts.get("ansible_distribution_version");
3002+
createHostVersionSystemTags(distro, release, version);
3003+
trigger.next();
3004+
}
3005+
});
3006+
29703007
flow(new NoRollbackFlow() {
29713008
String __name__ = "recover-host-state";
29723009

0 commit comments

Comments
 (0)