Skip to content

Commit 4046e46

Browse files
DaanHooglanddhslove
authored andcommitted
migrate Vmware to KVM ui issues (apache#10413)
1 parent 7c6a7f0 commit 4046e46

File tree

3 files changed

+29
-11
lines changed

3 files changed

+29
-11
lines changed

ui/public/locales/en.json

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1793,6 +1793,8 @@
17931793
"label.prepare.for.shutdown": "Prepare for Shutdown",
17941794
"label.prepare.for.maintenance": "Prepare for Maintenance",
17951795
"label.presetup": "PreSetup",
1796+
"label.press.enter": "Press enter when done.",
1797+
"label.press.enter.tooltip": "On leaving a any of these fields above, when they all contain values, or on pressing enter, ESXi hosts will be retrieved. If this is successful, a dropdown will appear with the list of ESXi hosts.",
17961798
"label.prev": "Prev",
17971799
"label.previous": "Previous",
17981800
"label.primera.username.tooltip": "The username with edit privileges",
@@ -3402,7 +3404,7 @@
34023404
"message.license.agreements.not.accepted": "License agreements not accepted.",
34033405
"message.linstor.resourcegroup.description": "Linstor resource group to use for primary storage.",
34043406
"message.list.zone.vmware.datacenter.empty": "No VMware Datacenter exists in the selected Zone",
3405-
"message.list.zone.vmware.hosts.empty": "No VMware hosts were found in the selected Datacenter",
3407+
"message.list.zone.vmware.hosts.empty": "No EXSi hosts were found in the selected Datacenter.\nAre the entered credentials correct?\n",
34063408
"message.listnsp.not.return.providerid": "error: listNetworkServiceProviders API doesn't return VirtualRouter provider ID.",
34073409
"message.load.host.failed": "Failed to load hosts.",
34083410
"message.loadbalancer.stickypolicy.configuration": "Customize the load balancer stickiness policy:",

ui/src/views/tools/SelectVmwareVcenter.vue

Lines changed: 22 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -89,7 +89,8 @@
8989
<a-input
9090
v-model:value="vcenter"
9191
:placeholder="apiParams.vcenter.description"
92-
@change="onSelectExternalVmwareDatacenter"
92+
@blur="onSelectExternalVmwareDatacenter"
93+
@pressEnter="onSelectExternalVmwareDatacenter"
9394
/>
9495
</a-form-item>
9596
<a-form-item ref="datacenter" name="datacenter">
@@ -99,7 +100,8 @@
99100
<a-input
100101
v-model:value="datacenter"
101102
:placeholder="apiParams.datacentername.description"
102-
@change="onSelectExternalVmwareDatacenter"
103+
@blur="onSelectExternalVmwareDatacenter"
104+
@pressEnter="onSelectExternalVmwareDatacenter"
103105
/>
104106
</a-form-item>
105107
<a-form-item ref="username" name="username">
@@ -109,7 +111,8 @@
109111
<a-input
110112
v-model:value="username"
111113
:placeholder="apiParams.username.description"
112-
@change="onSelectExternalVmwareDatacenter"
114+
@blur="onSelectExternalVmwareDatacenter"
115+
@pressEnter="onSelectExternalVmwareDatacenter"
113116
/>
114117
</a-form-item>
115118
<a-form-item ref="password" name="password">
@@ -119,22 +122,26 @@
119122
<a-input-password
120123
v-model:value="password"
121124
:placeholder="apiParams.password.description"
122-
@change="onSelectExternalVmwareDatacenter"
125+
@blur="onSelectExternalVmwareDatacenter"
126+
@pressEnter="onSelectExternalVmwareDatacenter"
123127
/>
124128
</a-form-item>
129+
&nbsp;
130+
<tooltip-label :title="$t('label.press.enter')" :tooltip="$t('label.press.enter.tooltip')"/>
125131
</div>
126132
<div
127133
v-if="selectedExistingVcenterId || (vcenterSelectedOption === 'new')">
128-
<a-form-item :label="$t('label.vcenter.host')" ref="host" name="host" v-if="hosts.length > 0">
134+
<a-form-item :label="$t('label.esx.host')" ref="host" name="host" v-if="hosts.length > 0">
129135
<a-select
130136
v-model:value="form.host"
131137
:loading="loading"
132138
optionFilterProp="label"
133139
:filterOption="(input, option) => {
134140
return option.label.toLowerCase().indexOf(input.toLowerCase()) >= 0
135141
}"
136-
:placeholder="$t('label.vcenter.host')"
142+
:placeholder="$t('label.esx.host')"
137143
@change="onSelectExistingVmwareHost">
144+
<a-select-option key="" label="">{{ }}</a-select-option>
138145
<a-select-option v-for="opt in hosts" :key="opt.name">
139146
{{ 'ESXi: ' + opt.name }}
140147
</a-select-option>
@@ -283,7 +290,7 @@ export default {
283290
this.loading = false
284291
})
285292
},
286-
listZoneVmwareDcHosts () {
293+
loadZoneVmwareDcHosts (doNotify) {
287294
this.loading = true
288295
const params = {}
289296
if (this.vcenterSelectedOption === 'new') {
@@ -299,18 +306,23 @@ export default {
299306
this.hosts = response.listvmwaredchostsresponse.host
300307
}
301308
}).catch(error => {
302-
this.$notifyError(error)
309+
if (doNotify) {
310+
this.$notifyError(error)
311+
}
312+
this.hosts = []
313+
return false
303314
}).finally(() => {
304315
this.loading = false
316+
return true
305317
})
306318
},
307319
onSelectExistingVmwareDatacenter (value) {
308320
this.selectedExistingVcenterId = value
309-
this.listZoneVmwareDcHosts()
321+
this.loadZoneVmwareDcHosts(true)
310322
},
311323
onSelectExternalVmwareDatacenter (value) {
312324
if (this.vcenterSelectedOption === 'new' && !(this.vcenter === '' || this.datacentername === '' || this.username === '' || this.password === '')) {
313-
this.listZoneVmwareDcHosts()
325+
this.loadZoneVmwareDcHosts(false)
314326
}
315327
},
316328
onSelectExistingVmwareHost (value) {

vmware-base/src/main/java/com/cloud/hypervisor/vmware/mo/BaseMO.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@
3434
import com.vmware.vim25.RetrieveResult;
3535

3636
import java.lang.reflect.InvocationTargetException;
37+
import java.util.ArrayList;
3738
import java.util.List;
3839

3940
public class BaseMO {
@@ -66,6 +67,9 @@ protected static Pair<String, List<ObjectContent>> createReturnObjectPair(Retrie
6667
if (s_logger.isDebugEnabled()) {
6768
s_logger.debug("vmware result : " + ReflectionToStringBuilderUtils.reflectCollection(result));
6869
}
70+
if (result == null) {
71+
return new Pair<>(null, new ArrayList<>());
72+
}
6973
String tokenForRetrievingNewResults = result.getToken();
7074
List<ObjectContent> listOfObjects = result.getObjects();
7175
return new Pair<>(tokenForRetrievingNewResults, listOfObjects);

0 commit comments

Comments
 (0)