Skip to content

Commit 213651e

Browse files
adding support for Verrazzano 1.5 component generation (#202)
1 parent 6f7d20c commit 213651e

7 files changed

+173
-88
lines changed

webui/src/js/models/k8s-domain-definition.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
/**
22
* @license
3-
* Copyright (c) 2021, 2022, Oracle and/or its affiliates.
3+
* Copyright (c) 2021, 2023, Oracle and/or its affiliates.
44
* Licensed under the Universal Permissive License v 1.0 as shown at https://oss.oracle.com/licenses/upl.
55
*/
66
'use strict';

webui/src/js/utils/k8s-domain-v9-resource-generator.js

Lines changed: 0 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -321,11 +321,6 @@ define(['models/wkt-project', 'utils/k8s-domain-configmap-generator', 'js-yaml',
321321
function getServerPodForCluster(cluster) {
322322
const serverPod = _getServerPod(getJavaOptionsForCluster(cluster), getUserMemArgsForCluster(cluster), getKubernetesResourcesForCluster(cluster)) || {};
323323

324-
const affinity = _getAffinityForServerPod(100);
325-
if (affinity) {
326-
serverPod.affinity = affinity;
327-
}
328-
329324
return Object.keys(serverPod).length > 0 ? serverPod : null;
330325
}
331326

@@ -433,26 +428,6 @@ define(['models/wkt-project', 'utils/k8s-domain-configmap-generator', 'js-yaml',
433428
return foundValue ? resources : null;
434429
}
435430

436-
function _getAffinityForServerPod(weight) {
437-
return {
438-
podAntiAffinity: {
439-
preferredDuringSchedulingIgnoredDuringExecution: [{
440-
weight: weight,
441-
podAffinityTerm: {
442-
topologyKey: 'kubernetes.io/hostname',
443-
labelSelector: {
444-
matchExpressions: [{
445-
key: 'weblogic.clusterName',
446-
operator: 'In',
447-
values: ['$(CLUSTER_NAME)'],
448-
}],
449-
},
450-
},
451-
}],
452-
},
453-
};
454-
}
455-
456431
function _getClusterName(domainUid, clusterName) {
457432
return `${domainUid}-${clusterName.replaceAll('_', '-')}`;
458433
}

webui/src/js/utils/vz-component-deployer.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -202,7 +202,8 @@ function(VzActionsBase, project, wktConsole, i18n, projectIo, dialogHelper, vali
202202
}
203203

204204
// Create the components needed for deployment
205-
const vzResourceGenerator = new VerrazzanoComponentResourceGenerator();
205+
const vzInstalledVersion = this.project.vzInstall.actualInstalledVersion.value || undefined;
206+
const vzResourceGenerator = new VerrazzanoComponentResourceGenerator(vzInstalledVersion);
206207
const vzConfigMapGenerator = new VerrazzanoComponentConfigMapGenerator();
207208
const components = [ vzResourceGenerator.generate().join('\n') ];
208209
if (vzConfigMapGenerator.shouldCreateConfigMap()) {
Lines changed: 21 additions & 60 deletions
Original file line numberDiff line numberDiff line change
@@ -1,78 +1,39 @@
11
/**
22
* @license
3-
* Copyright (c) 2022, Oracle and/or its affiliates.
3+
* Copyright (c) 2022, 2023, Oracle and/or its affiliates.
44
* Licensed under The Universal Permissive License (UPL), Version 1.0 as shown at https://oss.oracle.com/licenses/upl/
55
*/
66
'use strict';
77

8-
define(['models/wkt-project', 'utils/k8s-domain-resource-generator', 'utils/vz-helper', 'js-yaml', 'utils/i18n',
9-
'utils/wkt-logger'],
10-
function(project, K8sDomainResourceGenerator, VerrazzanoHelper, jsYaml) {
8+
define(['models/wkt-project', 'utils/vz-component-wko-v8-resource-generator',
9+
'utils/vz-component-wko-v9-resource-generator', 'utils/wkt-logger'],
10+
function(project, VerrazzanoComponentWkoV8ResourceGenerator, VerrazzanoComponentWkoV9ResourceGenerator, wktLogger) {
1111

12-
// Note that the specific version number doesn't really matter. What is important is until Verrazzano
13-
// starts distributing WKO 4.x, we use a 3.x version number to get the right Domain resource spec.
14-
//
15-
const WKO3_VERSION = '3.4.3';
12+
const WKO_V9_SWITCHOVER_VERSION = '1.5.0';
13+
const DEFAULT_VERRAZZANO_VERSION = WKO_V9_SWITCHOVER_VERSION;
1614

1715
class VerrazzanoComponentResourceGenerator {
18-
constructor() {
16+
constructor(verrazzanoVersion = DEFAULT_VERRAZZANO_VERSION) {
1917
this.project = project;
20-
this.k8sDomainResourceGenerator = new K8sDomainResourceGenerator(WKO3_VERSION);
21-
this._vzHelper = undefined;
18+
this.verrazzanoComponentResourceGenerator = _getVerrazzanoComponentResourceGenerator(verrazzanoVersion);
2219
}
2320

24-
generate() {
25-
const { domainResource } = this.k8sDomainResourceGenerator.generate(false);
26-
27-
const component = {
28-
apiVersion: this._getComponentApiVersion(),
29-
kind: 'Component',
30-
metadata: {
31-
name: this.project.vzComponent.componentName.value,
32-
namespace: this.project.k8sDomain.kubernetesNamespace.value,
33-
},
34-
spec: {
35-
workload: {
36-
apiVersion: this._getWorkloadApiVersion(),
37-
kind: 'VerrazzanoWebLogicWorkload',
38-
spec: {
39-
template: domainResource
40-
}
41-
}
42-
}
43-
};
44-
return jsYaml.dump(component).split('\n');
45-
}
46-
47-
_getComponentApiVersion() {
48-
let result = '<UNKNOWN>';
49-
50-
const vzHelper = this._getVerrazzanoHelper();
51-
if (vzHelper) {
52-
result = vzHelper.getComponentApiVersion();
53-
}
54-
return result;
55-
}
56-
57-
_getWorkloadApiVersion() {
58-
let result = '<UNKNOWN>';
59-
60-
const vzHelper = this._getVerrazzanoHelper();
61-
if (vzHelper) {
62-
result = vzHelper.getWorkloadApiVersion();
63-
}
64-
return result;
21+
generate(generateYaml = true) {
22+
return this.verrazzanoComponentResourceGenerator.generate(generateYaml);
6523
}
24+
}
6625

67-
_getVerrazzanoHelper() {
68-
if (!this._vzHelper) {
69-
const vzVersion = this.project.vzInstall.actualInstalledVersion.value;
70-
if (vzVersion) {
71-
this._vzHelper = new VerrazzanoHelper(vzVersion);
72-
}
73-
}
74-
return this._vzHelper;
26+
function _getVerrazzanoComponentResourceGenerator(verrazzanoVersion) {
27+
let generator;
28+
if (window.api.utils.compareVersions(verrazzanoVersion, WKO_V9_SWITCHOVER_VERSION) < 0) {
29+
wktLogger.debug('Using Verrazzano version %s to create Verrazzano component WKO V8 resource generator', verrazzanoVersion);
30+
generator = new VerrazzanoComponentWkoV8ResourceGenerator();
31+
} else {
32+
wktLogger.debug('Using Verrazzano version %s to create Verrazzano component WKO V9 resource generator', verrazzanoVersion);
33+
generator = new VerrazzanoComponentWkoV9ResourceGenerator();
7534
}
35+
return generator;
7636
}
37+
7738
return VerrazzanoComponentResourceGenerator;
7839
});
Lines changed: 73 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,73 @@
1+
/**
2+
* @license
3+
* Copyright (c) 2022, 2023, Oracle and/or its affiliates.
4+
* Licensed under The Universal Permissive License (UPL), Version 1.0 as shown at https://oss.oracle.com/licenses/upl/
5+
*/
6+
'use strict';
7+
8+
define(['models/wkt-project', 'utils/k8s-domain-v8-resource-generator', 'utils/vz-helper', 'js-yaml', 'utils/i18n',
9+
'utils/wkt-logger'],
10+
function(project, K8sDomainV8ResourceGenerator, VerrazzanoHelper, jsYaml) {
11+
12+
class VerrazzanoComponentWkoV8ResourceGenerator {
13+
constructor() {
14+
this.project = project;
15+
this.k8sDomainResourceGenerator = new K8sDomainV8ResourceGenerator();
16+
this._vzHelper = undefined;
17+
}
18+
19+
generate() {
20+
const { domainResource } = this.k8sDomainResourceGenerator.generate(false);
21+
22+
const component = {
23+
apiVersion: this._getComponentApiVersion(),
24+
kind: 'Component',
25+
metadata: {
26+
name: this.project.vzComponent.componentName.value,
27+
namespace: this.project.k8sDomain.kubernetesNamespace.value,
28+
},
29+
spec: {
30+
workload: {
31+
apiVersion: this._getWorkloadApiVersion(),
32+
kind: 'VerrazzanoWebLogicWorkload',
33+
spec: {
34+
template: domainResource
35+
}
36+
}
37+
}
38+
};
39+
return jsYaml.dump(component).split('\n');
40+
}
41+
42+
_getComponentApiVersion() {
43+
let result = '<UNKNOWN>';
44+
45+
const vzHelper = this._getVerrazzanoHelper();
46+
if (vzHelper) {
47+
result = vzHelper.getComponentApiVersion();
48+
}
49+
return result;
50+
}
51+
52+
_getWorkloadApiVersion() {
53+
let result = '<UNKNOWN>';
54+
55+
const vzHelper = this._getVerrazzanoHelper();
56+
if (vzHelper) {
57+
result = vzHelper.getWorkloadApiVersion();
58+
}
59+
return result;
60+
}
61+
62+
_getVerrazzanoHelper() {
63+
if (!this._vzHelper) {
64+
const vzVersion = this.project.vzInstall.actualInstalledVersion.value;
65+
if (vzVersion) {
66+
this._vzHelper = new VerrazzanoHelper(vzVersion);
67+
}
68+
}
69+
return this._vzHelper;
70+
}
71+
}
72+
return VerrazzanoComponentWkoV8ResourceGenerator;
73+
});
Lines changed: 74 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,74 @@
1+
/**
2+
* @license
3+
* Copyright (c) 2022, 2023, Oracle and/or its affiliates.
4+
* Licensed under The Universal Permissive License (UPL), Version 1.0 as shown at https://oss.oracle.com/licenses/upl/
5+
*/
6+
'use strict';
7+
8+
define(['models/wkt-project', 'utils/k8s-domain-v9-resource-generator', 'utils/vz-helper', 'js-yaml', 'utils/i18n',
9+
'utils/wkt-logger'],
10+
function(project, K8sDomainV9ResourceGenerator, VerrazzanoHelper, jsYaml) {
11+
12+
class VerrazzanoComponentWkoV9ResourceGenerator {
13+
constructor() {
14+
this.project = project;
15+
this.k8sDomainResourceGenerator = new K8sDomainV9ResourceGenerator();
16+
this._vzHelper = undefined;
17+
}
18+
19+
generate() {
20+
const { domainResource, clusters } = this.k8sDomainResourceGenerator.generate(false);
21+
22+
const component = {
23+
apiVersion: this._getComponentApiVersion(),
24+
kind: 'Component',
25+
metadata: {
26+
name: this.project.vzComponent.componentName.value,
27+
namespace: this.project.k8sDomain.kubernetesNamespace.value,
28+
},
29+
spec: {
30+
workload: {
31+
apiVersion: this._getWorkloadApiVersion(),
32+
kind: 'VerrazzanoWebLogicWorkload',
33+
spec: {
34+
template: domainResource,
35+
clusters: clusters
36+
}
37+
}
38+
}
39+
};
40+
return jsYaml.dump(component).split('\n');
41+
}
42+
43+
_getComponentApiVersion() {
44+
let result = '<UNKNOWN>';
45+
46+
const vzHelper = this._getVerrazzanoHelper();
47+
if (vzHelper) {
48+
result = vzHelper.getComponentApiVersion();
49+
}
50+
return result;
51+
}
52+
53+
_getWorkloadApiVersion() {
54+
let result = '<UNKNOWN>';
55+
56+
const vzHelper = this._getVerrazzanoHelper();
57+
if (vzHelper) {
58+
result = vzHelper.getWorkloadApiVersion();
59+
}
60+
return result;
61+
}
62+
63+
_getVerrazzanoHelper() {
64+
if (!this._vzHelper) {
65+
const vzVersion = this.project.vzInstall.actualInstalledVersion.value;
66+
if (vzVersion) {
67+
this._vzHelper = new VerrazzanoHelper(vzVersion);
68+
}
69+
}
70+
return this._vzHelper;
71+
}
72+
}
73+
return VerrazzanoComponentWkoV9ResourceGenerator;
74+
});

webui/src/js/viewModels/vz-component-code-view.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -77,8 +77,9 @@ function (accUtils, ko, project, VerrazzanoComponentScriptGenerator, VerrazzanoC
7777
this.componentText = ko.observable();
7878
this.configMapText = ko.observable();
7979

80+
this.vzVersion = this.project.vzInstall.actualInstalledVersion.observable() || undefined;
8081
this.vzComponentConfigMapGenerator = new VerrazzanoComponentConfigMapGenerator();
81-
this.vzComponentResourceGenerator = new VerrazzanoComponentResourceGenerator();
82+
this.vzComponentResourceGenerator = new VerrazzanoComponentResourceGenerator(this.vzVersion);
8283

8384
this.renderScript = (selectedSubview) => {
8485
switch (selectedSubview) {

0 commit comments

Comments
 (0)