|
119 | 119 | /> |
120 | 120 | </a-form-item> |
121 | 121 | </div> |
| 122 | + <div v-if="selectedExistingVcenterId"> |
| 123 | + <a-form-item ref="host" name="host" v-if="hosts.length > 0"> |
| 124 | + <a-select |
| 125 | + v-model:value="form.host" |
| 126 | + :loading="loading" |
| 127 | + optionFilterProp="label" |
| 128 | + :filterOption="(input, option) => { |
| 129 | + return option.label.toLowerCase().indexOf(input.toLowerCase()) >= 0 |
| 130 | + }" |
| 131 | + :placeholder="$t('label.vcenter.host')" |
| 132 | + @change="onSelectExistingVmwareHost"> |
| 133 | + <a-select-option v-for="opt in hosts" :key="opt.id"> |
| 134 | + {{ 'ESXi: ' + opt.host + ' - DC: ' + opt.name }} |
| 135 | + </a-select-option> |
| 136 | + </a-select> |
| 137 | + </a-form-item> |
| 138 | + <div v-else> |
| 139 | + {{ $t('message.list.zone.vmware.hosts.empty') }} |
| 140 | + </div> |
| 141 | + </div> |
122 | 142 | <div class="card-footer"> |
123 | 143 | <a-button |
124 | 144 | v-if="vcenterSelectedOption == 'existing' || vcenterSelectedOption == 'new'" |
125 | | - :disabled="(vcenterSelectedOption === 'new' && (vcenter === '' || datacentername === '' || username === '' || password === '')) || |
126 | | - (vcenterSelectedOption === 'existing' && selectedExistingVcenterId === '')" |
| 145 | + :disabled="(vcenterSelectedOption === 'new' && ((vcenter === '' || datacentername === '' || username === '' || password === '')) || |
| 146 | + (vcenterSelectedOption === 'existing' && selectedExistingVcenterId === '')) && selectedHost === ''" |
127 | 147 | :loading="loading" |
128 | 148 | type="primary" |
129 | 149 | @click="listVmwareDatacenterVms">{{ $t('label.list.vmware.vcenter.vms') }}</a-button> |
@@ -154,6 +174,8 @@ export default { |
154 | 174 | zones: {}, |
155 | 175 | vcenterSelectedOption: '', |
156 | 176 | existingvcenter: [], |
| 177 | + hosts: [], |
| 178 | + selectedHost: '', |
157 | 179 | selectedExistingVcenterId: '', |
158 | 180 | selectedPoweredOnVm: false, |
159 | 181 | vmwareDcVms: [], |
@@ -217,7 +239,7 @@ export default { |
217 | 239 | } else { |
218 | 240 | params.existingvcenterid = this.selectedExistingVcenterId |
219 | 241 | } |
220 | | - params.batchsize = 2 |
| 242 | + params.host = this.selectedhost |
221 | 243 | api('listVmwareDcVms', params).then(json => { |
222 | 244 | const obj = { |
223 | 245 | params: params, |
@@ -256,8 +278,33 @@ export default { |
256 | 278 | this.loading = false |
257 | 279 | }) |
258 | 280 | }, |
| 281 | + listZoneVmwareDcHosts () { |
| 282 | + this.loading = true |
| 283 | + const params = {} |
| 284 | + if (this.vcenterSelectedOption === 'new') { |
| 285 | + params.datacentername = this.datacenter |
| 286 | + params.vcenter = this.vcenter |
| 287 | + params.username = this.username |
| 288 | + params.password = this.password |
| 289 | + } else { |
| 290 | + params.existingvcenterid = this.selectedExistingVcenterId |
| 291 | + } |
| 292 | + api('listVmwareDcHosts', params).then(response => { |
| 293 | + if (response.listvmwaredchostsresponse.VMwareDC && response.listvmwaredchostsresponse.VMwareDC.length > 0) { |
| 294 | + this.hosts = response.listvmwaredchostsresponse.hosts |
| 295 | + } |
| 296 | + }).catch(error => { |
| 297 | + this.$notifyError(error) |
| 298 | + }).finally(() => { |
| 299 | + this.loading = false |
| 300 | + }) |
| 301 | + }, |
259 | 302 | onSelectExistingVmwareDatacenter (value) { |
260 | 303 | this.selectedExistingVcenterId = value |
| 304 | + this.listZoneVmwareDcHosts() |
| 305 | + }, |
| 306 | + onSelectExistingVmwareHost (value) { |
| 307 | + this.selectedHost = value |
261 | 308 | }, |
262 | 309 | onVcenterTypeChange () { |
263 | 310 | this.$emit('onVcenterTypeChanged', this.vcenterSelectedOption) |
|
0 commit comments