Skip to content

Commit 75a8e44

Browse files
committed
Add logic to skip mounting guest tools if xs version >= 8.2
1 parent 040d878 commit 75a8e44

File tree

1 file changed

+24
-1
lines changed

1 file changed

+24
-1
lines changed

plugins/hypervisors/xenserver/src/main/java/com/cloud/hypervisor/xenserver/resource/wrapper/xenbase/CitrixStartCommandWrapper.java

Lines changed: 24 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -96,7 +96,15 @@ public Answer execute(final StartCommand command, final CitrixResourceBase citri
9696
citrixResourceBase.createVGPU(conn, command, vm, gpuDevice);
9797
}
9898

99-
if (vmSpec.getType() != VirtualMachine.Type.User) {
99+
Host.Record record = host.getRecord(conn);
100+
String xenBrand = record.softwareVersion.get("product_brand");
101+
String xenVersion = record.softwareVersion.get("product_version");
102+
boolean requiresGuestTools = true;
103+
if (xenBrand.equals("XenServer") && isVersionGreaterThanOrEqual(xenVersion, "8.2.0")) {
104+
requiresGuestTools = false;
105+
}
106+
107+
if (vmSpec.getType() != VirtualMachine.Type.User && requiresGuestTools) {
100108
citrixResourceBase.createPatchVbd(conn, vmName, vm);
101109
}
102110

@@ -263,4 +271,19 @@ private void prepareDisks(VirtualMachineTO vmSpec, CitrixResourceBase citrixReso
263271
}
264272
}
265273
}
274+
275+
public static boolean isVersionGreaterThanOrEqual(String v1, String v2) {
276+
String[] parts1 = v1.split("\\.");
277+
String[] parts2 = v2.split("\\.");
278+
279+
int length = Math.max(parts1.length, parts2.length);
280+
for (int i = 0; i < length; i++) {
281+
int num1 = i < parts1.length ? Integer.parseInt(parts1[i]) : 0;
282+
int num2 = i < parts2.length ? Integer.parseInt(parts2[i]) : 0;
283+
284+
if (num1 > num2) return true;
285+
if (num1 < num2) return false;
286+
}
287+
return true; // versions are equal
288+
}
266289
}

0 commit comments

Comments
 (0)