Virtual Machine Pool XMLElements are missing USER_TEMPLATE
Description
When iterating a VirtualMachinePool object to get all of the vms as XMLElements, the vms are missing the USER_TEMPLATE section.
The code in question is
vm_pool = VirtualMachinePool.new(client)
rc = vm_pool.info_all
raise rc.message if OpenNebula.is_error?(rc)
vms = vm_pool.retrieve_xmlelements('/VM_POOL/VM')
The vms array will contain vm XML elements without USER_TEMPLATE
To Reproduce
Use the following ruby code as an example
require 'opennebula'
include OpenNebula
CREDENTIALS = ''# your credentials here
ENDPOINT = ''#oned wherever it is running
client = Client.new(CREDENTIALS, ENDPOINT)
vm_pool = VirtualMachinePool.new(client)
rc = vm_pool.info_all
raise rc.message if OpenNebula.is_error?(rc)
vms = vm_pool.retrieve_xmlelements('/VM_POOL/VM')
vms.each do |vm|
puts '---------'
puts vm['ID']
puts '---------'
puts vm['USER_TEMPLATE']
puts '---------'
vm = VirtualMachine.new_with_id(vm['ID'], client)
rc = vm.info
raise rc.message if OpenNebula.is_error?(rc)
puts '=========='
puts vm['ID']
puts '=========='
puts vm['USER_TEMPLATE']
puts '=========='
end
And it will output
---------
315
---------
---------
==========
315
==========
ONEAPP_VNF_DHCP4_ENABLED,ONEAPP_VNF_DHCP4_INTERFACES,ONEAPP_VNF_DHCP4_LEASE_TIME,ONEAPP_VNF_DNS_ENABLED,ONEAPP_VNF_DNS_INTERFACES,ONEAPP_VNF_DNS_MAX_CACHE_TTL,ONEAPP_VNF_DNS_USE_ROOTSERVERS,ONEAPP_VNF_HAPROXY_ENABLED,ONEAPP_VNF_HAPROXY_INTERFACES,ONEAPP_VNF_LB_ENABLED,ONEAPP_VNF_LB_INTERFACES,ONEAPP_VNF_NAT4_ENABLED,ONEAPP_VNF_NAT4_INTERFACES_OUT,ONEAPP_VNF_SDNAT4_ENABLED,ONEAPP_VNF_SDNAT4_INTERFACEStrueNO3600NO3600YESNONOYESeth0NOO|boolean|Enable DHCPv4| |NOO|text|DHCP4 - Listening InterfacesO|number|DHCP4 - Lease Time [sec]| |3600O|boolean|Enable DNS Server| |NOO|text|DNS - Listening InterfacesO|number|DNS - Maximum Caching Time [sec]| |3600O|boolean|DNS - Use Rootservers| |YESO|boolean|Enable HAProxy| |NOO|text|HAProxy - InterfacesO|boolean|Enable LoadBalancer| |NOO|text|LoadBalancer - InterfacesO|boolean|Enable NAT| |NOO|text|NAT - Outgoing InterfacesO|boolean|Enable SDNAT| |NOO|text|SDNAT - Mapped InterfacesYES
==========
---------
312
---------
ENERGYENERGY=50
---------
==========
312
==========
0YESYESFAASENERGYENERGY=50512
==========
The difference content wise is clear. Although it looks like SCHED_REQUIREMENTS and SCHED_DS are correctly loaded. However, everything else is missing.
Expected behavior The second part of the loop in the code where the VM is loaded individually by its ID works as expected
vm = VirtualMachine.new_with_id(vm['ID'], client)
rc = vm.info
raise rc.message if OpenNebula.is_error?(rc)
Additional context Even using the user_template_str method yields nil on the vm from the vm_pool yields nil.
The VMs user template in question for this report
root@pedev:~# onevm show 315 -j | jq .VM.USER_TEMPLATE
{
"INPUTS_ORDER": "ONEAPP_VNF_DHCP4_ENABLED,ONEAPP_VNF_DHCP4_INTERFACES,ONEAPP_VNF_DHCP4_LEASE_TIME,ONEAPP_VNF_DNS_ENABLED,ONEAPP_VNF_DNS_INTERFACES,ONEAPP_VNF_DNS_MAX_CACHE_TTL,ONEAPP_VNF_DNS_USE_ROOTSERVERS,ONEAPP_VNF_HAPROXY_ENABLED,ONEAPP_VNF_HAPROXY_INTERFACES,ONEAPP_VNF_LB_ENABLED,ONEAPP_VNF_LB_INTERFACES,ONEAPP_VNF_NAT4_ENABLED,ONEAPP_VNF_NAT4_INTERFACES_OUT,ONEAPP_VNF_SDNAT4_ENABLED,ONEAPP_VNF_SDNAT4_INTERFACES",
"LXD_SECURITY_PRIVILEGED": "true",
"ONEAPP_VNF_DHCP4_ENABLED": "NO",
"ONEAPP_VNF_DHCP4_LEASE_TIME": "3600",
"ONEAPP_VNF_DNS_ENABLED": "NO",
"ONEAPP_VNF_DNS_MAX_CACHE_TTL": "3600",
"ONEAPP_VNF_DNS_USE_ROOTSERVERS": "YES",
"ONEAPP_VNF_HAPROXY_ENABLED": "NO",
"ONEAPP_VNF_LB_ENABLED": "NO",
"ONEAPP_VNF_NAT4_ENABLED": "YES",
"ONEAPP_VNF_NAT4_INTERFACES_OUT": "eth0",
"ONEAPP_VNF_SDNAT4_ENABLED": "NO",
"USER_INPUTS": {
"ONEAPP_VNF_DHCP4_ENABLED": "O|boolean|Enable DHCPv4| |NO",
"ONEAPP_VNF_DHCP4_INTERFACES": "O|text|DHCP4 - Listening Interfaces",
"ONEAPP_VNF_DHCP4_LEASE_TIME": "O|number|DHCP4 - Lease Time [sec]| |3600",
"ONEAPP_VNF_DNS_ENABLED": "O|boolean|Enable DNS Server| |NO",
"ONEAPP_VNF_DNS_INTERFACES": "O|text|DNS - Listening Interfaces",
"ONEAPP_VNF_DNS_MAX_CACHE_TTL": "O|number|DNS - Maximum Caching Time [sec]| |3600",
"ONEAPP_VNF_DNS_USE_ROOTSERVERS": "O|boolean|DNS - Use Rootservers| |YES",
"ONEAPP_VNF_HAPROXY_ENABLED": "O|boolean|Enable HAProxy| |NO",
"ONEAPP_VNF_HAPROXY_INTERFACES": "O|text|HAProxy - Interfaces",
"ONEAPP_VNF_LB_ENABLED": "O|boolean|Enable LoadBalancer| |NO",
"ONEAPP_VNF_LB_INTERFACES": "O|text|LoadBalancer - Interfaces",
"ONEAPP_VNF_NAT4_ENABLED": "O|boolean|Enable NAT| |NO",
"ONEAPP_VNF_NAT4_INTERFACES_OUT": "O|text|NAT - Outgoing Interfaces",
"ONEAPP_VNF_SDNAT4_ENABLED": "O|boolean|Enable SDNAT| |NO",
"ONEAPP_VNF_SDNAT4_INTERFACES": "O|text|SDNAT - Mapped Interfaces"
},
"VROUTER": "YES"
}
and
root@pedev:~# onevm show 312 -j | jq .VM.USER_TEMPLATE
{
"FLAVOURS": "0",
"HOT_RESIZE": {
"CPU_HOT_ADD_ENABLED": "YES",
"MEMORY_HOT_ADD_ENABLED": "YES"
},
"ROLE_NAME": "FAAS",
"SCHED_RANK": "ENERGY",
"SCHED_REQUIREMENTS": "ENERGY=50",
"SERVICE_ID": "512"
}
Progress Status
- [ ] Code committed
- [ ] Testing - QA
- [ ] Documentation (Release notes - resolved issues, compatibility, known issues)