Skip to content

Commit 3b6021c

Browse files
committed
making changes to address issues with domain deployment when using DII
1 parent a64e17b commit 3b6021c

File tree

4 files changed

+128
-115
lines changed

4 files changed

+128
-115
lines changed

webui/src/js/utils/k8s-domain-deployer.js

Lines changed: 43 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -247,55 +247,59 @@ function (project, wktConsole, k8sHelper, i18n, projectIo, dialogHelper, K8sDoma
247247
return Promise.resolve(false);
248248
}
249249

250-
// Create Secrets
251-
busyDialogMessage = i18n.t('k8s-domain-deployer-create-secrets-in-progress',
252-
{domainName: domainUid, namespace: domainNamespace});
253-
dialogHelper.updateBusyDialog(busyDialogMessage, 10 / totalSteps);
254-
const secrets = this.project.k8sDomain.secrets.value;
255-
if (secrets && secrets.length > 0) {
256-
for (const secret of secrets) {
257-
let secretName = '';
258-
const secretData = {};
259-
for (const [key, value] of Object.entries(secret)) {
260-
if (key === 'name') {
261-
secretName = value;
262-
} else if (key !== 'uid') {
263-
// skip artificial uid field...
264-
secretData[key] = value;
250+
// Create Secrets, if needed
251+
if (this.project.settings.targetDomainLocation.value === 'mii') {
252+
busyDialogMessage = i18n.t('k8s-domain-deployer-create-secrets-in-progress',
253+
{domainName: domainUid, namespace: domainNamespace});
254+
dialogHelper.updateBusyDialog(busyDialogMessage, 10 / totalSteps);
255+
const secrets = this.project.k8sDomain.secrets.value;
256+
if (secrets && secrets.length > 0) {
257+
for (const secret of secrets) {
258+
let secretName = '';
259+
const secretData = {};
260+
for (const [key, value] of Object.entries(secret)) {
261+
if (key === 'name') {
262+
secretName = value;
263+
} else if (key !== 'uid') {
264+
// skip artificial uid field...
265+
secretData[key] = value;
266+
}
267+
}
268+
wktLogger.debug('Creating secret %s', secretName);
269+
270+
const createSecretResults =
271+
await window.api.ipc.invoke('k8s-create-generic-secret', kubectlExe, domainNamespace, secretName, secretData, kubectlOptions);
272+
if (!createSecretResults.isSuccess) {
273+
const errMessage = i18n.t('k8s-domain-deployer-create-secret-failed-error-message',
274+
{secretName: secretName, namespace: domainNamespace, error: createSecretResults.reason});
275+
dialogHelper.closeBusyDialog();
276+
await window.api.ipc.invoke('show-error-message', errTitle, errMessage);
277+
return Promise.resolve(false);
265278
}
266279
}
267-
wktLogger.debug('Creating secret %s', secretName);
280+
}
281+
}
268282

269-
const createSecretResults =
270-
await window.api.ipc.invoke('k8s-create-generic-secret', kubectlExe, domainNamespace, secretName, secretData, kubectlOptions);
271-
if (!createSecretResults.isSuccess) {
272-
const errMessage = i18n.t('k8s-domain-deployer-create-secret-failed-error-message',
273-
{secretName: secretName, namespace: domainNamespace, error: createSecretResults.reason});
283+
// Create ConfigMap, if needed
284+
if (this.project.settings.targetDomainLocation.value === 'mii') {
285+
if (!this.project.k8sDomain.configMapIsEmpty()) {
286+
const configMapData = this.k8sDomainConfigMapGenerator.generate().join('\n');
287+
wktLogger.debug(configMapData);
288+
busyDialogMessage = i18n.t('k8s-domain-deployer-create-config-map-in-progress',
289+
{domainName: domainUid, domainNamespace: domainNamespace});
290+
dialogHelper.updateBusyDialog(busyDialogMessage, 11 / totalSteps);
291+
const mapResults = await (window.api.ipc.invoke('k8s-apply', kubectlExe, configMapData, kubectlOptions));
292+
if (!mapResults.isSuccess) {
293+
const configMapName = this.project.k8sDomain.modelConfigMapName.value;
294+
const errMessage = i18n.t('k8s-domain-deployer-create-config-map-failed-error-message',
295+
{configMapName: configMapName, domainNamespace: domainNamespace, error: mapResults.reason});
274296
dialogHelper.closeBusyDialog();
275297
await window.api.ipc.invoke('show-error-message', errTitle, errMessage);
276298
return Promise.resolve(false);
277299
}
278300
}
279301
}
280302

281-
// Create ConfigMap, if needed
282-
if (!this.project.k8sDomain.configMapIsEmpty()) {
283-
const configMapData = this.k8sDomainConfigMapGenerator.generate().join('\n');
284-
wktLogger.debug(configMapData);
285-
busyDialogMessage = i18n.t('k8s-domain-deployer-create-config-map-in-progress',
286-
{domainName: domainUid, domainNamespace: domainNamespace});
287-
dialogHelper.updateBusyDialog(busyDialogMessage, 11 / totalSteps);
288-
const mapResults = await (window.api.ipc.invoke('k8s-apply', kubectlExe, configMapData, kubectlOptions));
289-
if (!mapResults.isSuccess) {
290-
const configMapName = this.project.k8sDomain.modelConfigMapName.value;
291-
const errMessage = i18n.t('k8s-domain-deployer-create-config-map-failed-error-message',
292-
{configMapName: configMapName, domainNamespace: domainNamespace, error: mapResults.reason});
293-
dialogHelper.closeBusyDialog();
294-
await window.api.ipc.invoke('show-error-message', errTitle, errMessage);
295-
return Promise.resolve(false);
296-
}
297-
}
298-
299303
// Deploy domain
300304
busyDialogMessage = i18n.t('k8s-domain-deployer-deploy-in-progress',
301305
{domainName: domainUid, domainNamespace: domainNamespace});

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

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,8 @@
55
*/
66
'use strict';
77

8-
define(['models/wkt-project', 'utils/k8s-domain-configmap-generator', 'js-yaml', 'utils/i18n'],
9-
function(project, K8sDomainConfigMapGenerator, jsYaml, i18n) {
8+
define(['models/wkt-project', 'utils/k8s-domain-configmap-generator', 'js-yaml', 'utils/i18n', 'utils/wkt-logger'],
9+
function(project, K8sDomainConfigMapGenerator, jsYaml, i18n, logger) {
1010
class K8sDomainResourceGenerator {
1111
constructor() {
1212
this.project = project;
@@ -36,7 +36,8 @@ define(['models/wkt-project', 'utils/k8s-domain-configmap-generator', 'js-yaml',
3636
}
3737
};
3838

39-
if (this.project.k8sDomain.domainHome.hasValue()) {
39+
logger.debug('Domain home path: %s', this.project.k8sDomain.domainHome.value)
40+
if (this.project.k8sDomain.domainHome.value) {
4041
domainResource.spec.domainHome = this.project.k8sDomain.domainHome.value;
4142
}
4243

webui/src/js/viewModels/domain-design-view.js

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,10 @@ function (project, accUtils, utils, ko, i18n, BufferingDataProvider,
3535
return this.project.settings.targetDomainLocation.observable() === 'pv';
3636
});
3737

38+
this.isModelInImage = ko.computed(() => {
39+
return this.project.settings.targetDomainLocation.observable() === 'mii';
40+
});
41+
3842
this.domainHomeHelpLabel = ko.computed(() => {
3943
const domainHomeHelpKey = this.isDomainInPV() ? 'domain-home-help' : 'domain-home-readonly-help';
4044
return this.labelMapper(domainHomeHelpKey);
@@ -143,7 +147,7 @@ function (project, accUtils, utils, ko, i18n, BufferingDataProvider,
143147
{keyAttributes: 'uid', sortComparators: propertyComparators}));
144148

145149
this.hasEncryptionSecret = () => {
146-
return this.project.settings.targetDomainLocation.value === 'mii';
150+
return this.isModelInImage();
147151
};
148152

149153
this.secretsTableColumnMetadata = () => {

webui/src/js/views/domain-design-view.html

Lines changed: 76 additions & 72 deletions
Original file line numberDiff line numberDiff line change
@@ -176,80 +176,84 @@ <h6 class="wkt-subheading"><oj-bind-text value="[[labelMapper('clusters-title')]
176176
</oj-table>
177177
</div>
178178

179-
<div class="oj-panel">
180-
<h6 class="wkt-subheading"><oj-bind-text value="[[labelMapper('configmap-title')]]"></oj-bind-text></h6>
181-
<oj-bind-if test="[[modelHasNoProperties() === false]]">
182-
<oj-form-layout max-columns="1">
183-
<oj-input-text label-hint="[[labelMapper('configmap-label')]]"
184-
value="{{project.k8sDomain.modelConfigMapName.observable}}"
185-
help.instruction="[[labelMapper('configmap-help')]]">
186-
</oj-input-text>
187-
</oj-form-layout>
188-
</oj-bind-if>
179+
<oj-bind-if test="[[isModelInImage() === true]]">
180+
<div class="oj-panel">
181+
<h6 class="wkt-subheading"><oj-bind-text value="[[labelMapper('configmap-title')]]"></oj-bind-text></h6>
182+
<oj-bind-if test="[[modelHasNoProperties() === false]]">
183+
<oj-form-layout max-columns="1">
184+
<oj-input-text label-hint="[[labelMapper('configmap-label')]]"
185+
value="{{project.k8sDomain.modelConfigMapName.observable}}"
186+
help.instruction="[[labelMapper('configmap-help')]]">
187+
</oj-input-text>
188+
</oj-form-layout>
189+
</oj-bind-if>
189190

190-
<oj-table id="properties-table"
191-
class="wkt-domain-properties-table"
192-
aria-label="ConfigMap Properties Table"
193-
data="{{configMapDP}}"
194-
display="grid"
195-
horizontal-grid-visible="enabled"
196-
vertical-grid-visible="enabled"
197-
edit-mode="rowEdit"
198-
layout="fixed"
199-
columns='[[propertyTableColumnMetadata()]]'>
200-
<template slot="rowTemplate" data-oj-as="row">
201-
<tr data-bind="attr: {'data-uid': row.data.uid}">
202-
<oj-bind-if test='[[row.mode=="navigation"]]'>
203-
<td><oj-bind-text value="[[row.data.Name]]"></oj-bind-text></td>
204-
<td><oj-bind-text value="[[row.data.Value]]"></oj-bind-text></td>
205-
<td><oj-bind-text value="[[row.data.Override]]"></oj-bind-text></td>
206-
</oj-bind-if>
207-
<oj-bind-if test='[[row.mode=="edit"]]'>
208-
<td><oj-input-text value="[[row.data.Name]]" disabled="true"></oj-input-text></td>
209-
<td><oj-input-text value="[[row.data.Value]]" disabled="true"></oj-input-text></td>
210-
<td><oj-input-text value="{{row.data.Override}}"></oj-input-text></td>
211-
</oj-bind-if>
212-
</tr>
213-
</template>
214-
</oj-table>
215-
</div>
191+
<oj-table id="properties-table"
192+
class="wkt-domain-properties-table"
193+
aria-label="ConfigMap Properties Table"
194+
data="{{configMapDP}}"
195+
display="grid"
196+
horizontal-grid-visible="enabled"
197+
vertical-grid-visible="enabled"
198+
edit-mode="rowEdit"
199+
layout="fixed"
200+
columns='[[propertyTableColumnMetadata()]]'>
201+
<template slot="rowTemplate" data-oj-as="row">
202+
<tr data-bind="attr: {'data-uid': row.data.uid}">
203+
<oj-bind-if test='[[row.mode=="navigation"]]'>
204+
<td><oj-bind-text value="[[row.data.Name]]"></oj-bind-text></td>
205+
<td><oj-bind-text value="[[row.data.Value]]"></oj-bind-text></td>
206+
<td><oj-bind-text value="[[row.data.Override]]"></oj-bind-text></td>
207+
</oj-bind-if>
208+
<oj-bind-if test='[[row.mode=="edit"]]'>
209+
<td><oj-input-text value="[[row.data.Name]]" disabled="true"></oj-input-text></td>
210+
<td><oj-input-text value="[[row.data.Value]]" disabled="true"></oj-input-text></td>
211+
<td><oj-input-text value="{{row.data.Override}}"></oj-input-text></td>
212+
</oj-bind-if>
213+
</tr>
214+
</template>
215+
</oj-table>
216+
</div>
217+
</oj-bind-if>
216218

217-
<div class="oj-panel">
218-
<h6 class="wkt-subheading"><oj-bind-text value="[[labelMapper('secrets-title')]]"></oj-bind-text></h6>
219-
<oj-table id="secrets-table"
220-
class="wkt-domain-secrets-table"
221-
aria-label="Secrets Table"
222-
data="[[secretsDP]]"
223-
display="grid"
224-
horizontal-grid-visible="enabled"
225-
vertical-grid-visible="enabled"
226-
edit-mode="rowEdit"
227-
layout="fixed"
228-
columns='[[secretsTableColumnMetadata()]]'>
229-
<template slot="rowTemplate" data-oj-as="row">
230-
<tr>
231-
<oj-bind-if test='[[row.mode=="navigation"]]'>
232-
<td><oj-bind-text value="[[row.data.name]]"></oj-bind-text></td>
233-
</oj-bind-if>
234-
<oj-bind-if test='[[row.mode=="edit"]]'>
235-
<td><oj-input-text value="{{row.data.name}}" disabled="true"></oj-input-text></td>
236-
</oj-bind-if>
237-
<td>
238-
<oj-input-password value="{{row.data.username}}"
239-
mask-icon="visible"
240-
readonly='[[row.mode=="navigation"]]' >
241-
</oj-input-password>
242-
</td>
243-
<td>
244-
<oj-input-password value="{{row.data.password}}"
245-
mask-icon="visible"
246-
readonly='[[row.mode=="navigation"]]' >
247-
</oj-input-password>
248-
</td>
249-
</tr>
250-
</template>
251-
</oj-table>
252-
</div>
219+
<oj-bind-if test="[[isModelInImage() === true]]">
220+
<div class="oj-panel">
221+
<h6 class="wkt-subheading"><oj-bind-text value="[[labelMapper('secrets-title')]]"></oj-bind-text></h6>
222+
<oj-table id="secrets-table"
223+
class="wkt-domain-secrets-table"
224+
aria-label="Secrets Table"
225+
data="[[secretsDP]]"
226+
display="grid"
227+
horizontal-grid-visible="enabled"
228+
vertical-grid-visible="enabled"
229+
edit-mode="rowEdit"
230+
layout="fixed"
231+
columns='[[secretsTableColumnMetadata()]]'>
232+
<template slot="rowTemplate" data-oj-as="row">
233+
<tr>
234+
<oj-bind-if test='[[row.mode=="navigation"]]'>
235+
<td><oj-bind-text value="[[row.data.name]]"></oj-bind-text></td>
236+
</oj-bind-if>
237+
<oj-bind-if test='[[row.mode=="edit"]]'>
238+
<td><oj-input-text value="{{row.data.name}}" disabled="true"></oj-input-text></td>
239+
</oj-bind-if>
240+
<td>
241+
<oj-input-password value="{{row.data.username}}"
242+
mask-icon="visible"
243+
readonly='[[row.mode=="navigation"]]' >
244+
</oj-input-password>
245+
</td>
246+
<td>
247+
<oj-input-password value="{{row.data.password}}"
248+
mask-icon="visible"
249+
readonly='[[row.mode=="navigation"]]' >
250+
</oj-input-password>
251+
</td>
252+
</tr>
253+
</template>
254+
</oj-table>
255+
</div>
256+
</oj-bind-if>
253257

254258
<oj-collapsible expanded='false'>
255259
<h6 slot="header" class="wkt-subheading"><oj-bind-text value="[[labelMapper('page-design-advanced-label')]]"></oj-bind-text></h6>

0 commit comments

Comments
 (0)