Skip to content

Commit 853daa0

Browse files
committed
K8S-381 fix upgrade version order
1 parent 2551581 commit 853daa0

File tree

1 file changed

+14
-5
lines changed

1 file changed

+14
-5
lines changed

manifest.jps

Lines changed: 14 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -500,34 +500,43 @@ addons:
500500
type: warning
501501
message: Cluster components have different Kubernetes version! Please contact support before upgrade.
502502
- script: |
503+
function compareVersions(a, b) {
504+
a = a.replace("v", "").split("."); b = b.replace("v", "").split(".");
505+
for (var i = 0, l = Math.max(a.length, b.length), x, y; i < l; i++) {x = parseInt(a[i], 10) || 0; y = parseInt(b[i], 10) || 0; if (x != y) return x > y ? 1 : -1 }
506+
return 0;
507+
}
508+
503509
var envName = "${env.envName}", nodeId = "${nodes.k8sm.master.id}";
504510
var resp = jelastic.env.control.GetNodeInfo(envName, session, nodeId);
505511
if (resp.result != 0) return resp;
506512
var version = resp.node.version;
507513
var image = resp.node.name;
508514
resp = jelastic.env.control.GetContainerNodeTags(envName, session, nodeId);
509515
if (resp.result != 0) return resp;
516+
510517
var tags = resp.object;
511-
tags.sort();
518+
tags.sort(compareVersions);
512519
var upgrades = [];
513520
var check_version = version;
514521
var major_version = version.substr(0, version.lastIndexOf("."));
522+
515523
for (var i = 0; i < tags.length; i++) {
516524
var major_tag = tags[i].substr(0, tags[i].lastIndexOf("."));
517-
if (major_tag > major_version) {
525+
if (compareVersions(major_tag, major_version) > 0) {
518526
check_version = tags[i];
519527
upgrades.push(check_version);
520528
major_version = major_tag;
521529
}
522530
}
531+
523532
var last_version = tags.pop();
524-
if (last_version > check_version) upgrades.push(last_version);
533+
if (compareVersions(last_version, check_version) > 0) upgrades.push(last_version);
525534
var message = "Current version " + version + " is the latest. No upgrades are available.";
526535
if (upgrades.length) {
527-
upgrades.sort();
536+
upgrades.sort(compareVersions);
528537
var next = upgrades.shift();
529538
var baseUrl = "${baseUrl}".split("/"); baseUrl.pop(); baseUrl = baseUrl.join("/");
530-
var url = baseUrl+"/"+next+"/addons/upgrade.jps"
539+
var url = baseUrl+"/"+next+"/addons/upgrade.jps";
531540
var huc = new java.net.URL(url).openConnection();
532541
huc.setRequestMethod("HEAD");
533542
var code = huc.getResponseCode();

0 commit comments

Comments
 (0)