Skip to content

Commit 99c06e0

Browse files
Fix template details deletion while updating template from UI
1 parent 25eacaa commit 99c06e0

4 files changed

Lines changed: 19 additions & 9 deletions

File tree

api/src/main/java/org/apache/cloudstack/api/BaseUpdateTemplateOrIsoCmd.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -145,8 +145,8 @@ public Map getDetails() {
145145
return (Map) (paramsCollection.toArray())[0];
146146
}
147147

148-
public boolean isCleanupDetails(){
149-
return cleanupDetails == null ? false : cleanupDetails.booleanValue();
148+
public boolean isCleanupDetails() {
149+
return cleanupDetails != null && cleanupDetails;
150150
}
151151

152152
public CPU.CPUArch getCPUArch() {

engine/schema/src/main/java/com/cloud/storage/dao/VMTemplateDaoImpl.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -459,7 +459,7 @@ public void saveDetails(VMTemplateVO tmpl) {
459459
if (detailsStr == null) {
460460
return;
461461
}
462-
List<VMTemplateDetailVO> details = new ArrayList<VMTemplateDetailVO>();
462+
List<VMTemplateDetailVO> details = new ArrayList<>();
463463
for (String key : detailsStr.keySet()) {
464464
VMTemplateDetailVO detail = new VMTemplateDetailVO(tmpl.getId(), key, detailsStr.get(key), true);
465465
details.add(detail);
@@ -481,7 +481,7 @@ public long addTemplateToZone(VMTemplateVO tmplt, long zoneId) {
481481
}
482482

483483
if (tmplt.getDetails() != null) {
484-
List<VMTemplateDetailVO> details = new ArrayList<VMTemplateDetailVO>();
484+
List<VMTemplateDetailVO> details = new ArrayList<>();
485485
for (String key : tmplt.getDetails().keySet()) {
486486
details.add(new VMTemplateDetailVO(tmplt.getId(), key, tmplt.getDetails().get(key), true));
487487
}

server/src/main/java/com/cloud/template/TemplateManagerImpl.java

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2210,7 +2210,7 @@ private VMTemplateVO updateTemplateOrIso(BaseUpdateTemplateOrIsoCmd cmd) {
22102210
templateType == null &&
22112211
templateTag == null &&
22122212
arch == null &&
2213-
(! cleanupDetails && details == null) //update details in every case except this one
2213+
(!cleanupDetails && details == null) //update details in every case except this one
22142214
);
22152215
if (!updateNeeded) {
22162216
return template;
@@ -2308,8 +2308,7 @@ private VMTemplateVO updateTemplateOrIso(BaseUpdateTemplateOrIsoCmd cmd) {
23082308
if (cleanupDetails) {
23092309
template.setDetails(null);
23102310
_tmpltDetailsDao.removeDetails(id);
2311-
}
2312-
else if (details != null && !details.isEmpty()) {
2311+
} else if (details != null && !details.isEmpty()) {
23132312
template.setDetails(details);
23142313
_tmpltDao.saveDetails(template);
23152314
}

ui/src/views/image/UpdateTemplate.vue

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -245,7 +245,8 @@ export default {
245245
userdataid: null,
246246
userdatapolicy: null,
247247
userdatapolicylist: {},
248-
architectureTypes: {}
248+
architectureTypes: {},
249+
details: {}
249250
}
250251
},
251252
beforeCreate () {
@@ -295,6 +296,11 @@ export default {
295296
}
296297
}
297298
}
299+
if (this.resource.details) {
300+
this.details = Object.keys(this.resource.details).map(k => {
301+
return { name: k, value: this.resource.details[k] }
302+
})
303+
}
298304
const resourceDetailsFields = []
299305
if (this.resource.hypervisor === 'KVM') {
300306
resourceDetailsFields.push('rootDiskController')
@@ -304,7 +310,7 @@ export default {
304310
for (var detailsField of resourceDetailsFields) {
305311
var detailValue = this.resource?.details?.[detailsField] || null
306312
if (detailValue) {
307-
this.form[detailValue] = fieldValue
313+
this.form[detailsField] = detailValue
308314
}
309315
}
310316
},
@@ -495,6 +501,11 @@ export default {
495501
const params = {
496502
id: this.resource.id
497503
}
504+
if (this.resource.details) {
505+
Object.keys(this.resource.details).forEach((detail, index) => {
506+
params['details[0].' + detail] = this.resource.details[detail]
507+
})
508+
}
498509
const detailsField = ['rootDiskController', 'nicAdapter', 'keyboard']
499510
for (const key in values) {
500511
if (!this.isValidValueForKey(values, key)) continue

0 commit comments

Comments
 (0)