[libvirt] VolumeCreateXML "XML" description for ESX

Hello, I am using libvirt 0.8.6 "python bindings " can someone point me to where i find the XML description of creating volumes using storagecolumecreateXML function ? i am getting libvir: ESX error : internal error Volume name 'nameXXXX.vmdk' doesn't have expected format '<directory>/<file>' thank you regards, Sherif

On 02/12/2010, at 8:18 PM, Sherif Nagy wrote:
Hello,
I am using libvirt 0.8.6 "python bindings " can someone point me to where i find the XML description of creating volumes using storagecolumecreateXML function ? i am getting libvir: ESX error : internal error Volume name 'nameXXXX.vmdk' doesn't have expected format '<directory>/<file>'
Hi Sherif, In theory, it's probably supposed to work with the "standard" storage and pool XML format documented here: http://libvirt.org/formatstorage.html But, it sounds like in practise that's not working for you. Is that the case? Regards and best wishes, Justin Clift

yes i am using same template like KVM but it is not working, seems ESX driver has a different XML structure since it is using datatstore /dir/filename.vdk structure. so any idea what is the XML structure for creating the XML for volumes using the ESX driver? On Thu, Dec 2, 2010 at 12:48 PM, Justin Clift <jclift@redhat.com> wrote:
On 02/12/2010, at 8:18 PM, Sherif Nagy wrote:
Hello,
I am using libvirt 0.8.6 "python bindings " can someone point me to where i find the XML description of creating volumes using storagecolumecreateXML function ? i am getting libvir: ESX error : internal error Volume name 'nameXXXX.vmdk' doesn't have expected format '<directory>/<file>'
Hi Sherif,
In theory, it's probably supposed to work with the "standard" storage and pool XML format documented here:
http://libvirt.org/formatstorage.html
But, it sounds like in practise that's not working for you. Is that the case?
Regards and best wishes,
Justin Clift

Matthias, sounds like there's a bug or we need to update the docs? On 02/12/2010, at 11:02 PM, Sherif Nagy wrote:
yes i am using same template like KVM but it is not working, seems ESX driver has a different XML structure since it is using datatstore /dir/filename.vdk structure.
so any idea what is the XML structure for creating the XML for volumes using the ESX driver?
On Thu, Dec 2, 2010 at 12:48 PM, Justin Clift <jclift@redhat.com> wrote: On 02/12/2010, at 8:18 PM, Sherif Nagy wrote:
Hello,
I am using libvirt 0.8.6 "python bindings " can someone point me to where i find the XML description of creating volumes using storagecolumecreateXML function ? i am getting libvir: ESX error : internal error Volume name 'nameXXXX.vmdk' doesn't have expected format '<directory>/<file>'
Hi Sherif,
In theory, it's probably supposed to work with the "standard" storage and pool XML format documented here:
http://libvirt.org/formatstorage.html
But, it sounds like in practise that's not working for you. Is that the case?
Regards and best wishes,
Justin Clift

The XML i am trying to use is "<volume><name>test_vm.vmdk</name><key></key><allocation>0</allocation><capacity unit='G'>2</capacity></volume>" or "<volume><name>test_vm.vmdk</name><directory>test_vm<file>test_vm.vmdk</file></directory><key></key><allocation>0</allocation><capacity unit='G'>2</capacity></volume>" and if i added directory and file directive i am still getting the same error, i am not sure if i am doing something wrong or it is a bug , can someone please advice me what is the correct XML structure for creating volume using the ESX driver ? Thank You Regards, Sherif On Thu, Dec 2, 2010 at 2:04 PM, Justin Clift <jclift@redhat.com> wrote:
Matthias, sounds like there's a bug or we need to update the docs?
yes i am using same template like KVM but it is not working, seems ESX driver has a different XML structure since it is using datatstore /dir/filename.vdk structure.
so any idea what is the XML structure for creating the XML for volumes using the ESX driver?
On Thu, Dec 2, 2010 at 12:48 PM, Justin Clift <jclift@redhat.com> wrote: On 02/12/2010, at 8:18 PM, Sherif Nagy wrote:
Hello,
I am using libvirt 0.8.6 "python bindings " can someone point me to where i find the XML description of creating volumes using storagecolumecreateXML function ? i am getting libvir: ESX error : internal error Volume name 'nameXXXX.vmdk' doesn't have expected format '<directory>/<file>'
Hi Sherif,
In theory, it's probably supposed to work with the "standard" storage and
On 02/12/2010, at 11:02 PM, Sherif Nagy wrote: pool XML format documented here:
http://libvirt.org/formatstorage.html
But, it sounds like in practise that's not working for you. Is that the
case?
Regards and best wishes,
Justin Clift
-- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list

This XML snippet should work <volume> <name>test_vm/test_vm.vmdk</name> <allocation>0</allocation> <capacity unit='G'>2</capacity> </volume> The error message says that the volume name doesn't have the expected format <directory>/<file>. The <> might be misleading here, they don't refer to XML elements. I can probably relax this and allow files in the datastore root. The problem with a .vmdk file in the datastore root is that ESX doesn't allow a virtual machine to be registered (or defined in libvirt terms) in the datastore root. The typical layout is to have a subdirectory per virtual machine. Matthias 2010/12/2 Sherif Nagy <sherif.nagy@gmail.com>:
The XML i am trying to use is "<volume><name>test_vm.vmdk</name><key></key><allocation>0</allocation><capacity unit='G'>2</capacity></volume>"
or
"<volume><name>test_vm.vmdk</name><directory>test_vm<file>test_vm.vmdk</file></directory><key></key><allocation>0</allocation><capacity unit='G'>2</capacity></volume>"
and if i added directory and file directive i am still getting the same error, i am not sure if i am doing something wrong or it is a bug , can someone please advice me what is the correct XML structure for creating volume using the ESX driver ?
Thank You Regards, Sherif
On Thu, Dec 2, 2010 at 2:04 PM, Justin Clift <jclift@redhat.com> wrote:
Matthias, sounds like there's a bug or we need to update the docs?
On 02/12/2010, at 11:02 PM, Sherif Nagy wrote:
yes i am using same template like KVM but it is not working, seems ESX driver has a different XML structure since it is using datatstore /dir/filename.vdk structure.
so any idea what is the XML structure for creating the XML for volumes using the ESX driver?
On Thu, Dec 2, 2010 at 12:48 PM, Justin Clift <jclift@redhat.com> wrote: On 02/12/2010, at 8:18 PM, Sherif Nagy wrote:
Hello,
I am using libvirt 0.8.6 "python bindings " can someone point me to where i find the XML description of creating volumes using storagecolumecreateXML function ? i am getting libvir: ESX error : internal error Volume name 'nameXXXX.vmdk' doesn't have expected format '<directory>/<file>'
Hi Sherif,
In theory, it's probably supposed to work with the "standard" storage and pool XML format documented here:
http://libvirt.org/formatstorage.html
But, it sounds like in practise that's not working for you. Is that the case?
Regards and best wishes,
Justin Clift
-- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list

Great ! it did pass the error of directory/file thank you for the support now i have another problem of creating the VMDK image with this XML <volume><name>test_vm/test_vm.vmdk</name><allocation>0</allocation><capacity unit='G'>2</capacity><target><format type='vmdk'/></target></volume> and error libvir: ESX error : internal error Could not create volume Traceback (most recent call last): File "<stdin>", line 1, in <module> File "/usr/lib64/python2.7/site-packages/libvirt.py", line 1116, in createXML if ret is None:raise libvirtError('virStorageVolCreateXML() failed', pool=self) libvirt.libvirtError: internal error Could not create volume may be it is an ESX server side problem or i am still missing or messing up something ? Regards, sherif On Thu, Dec 2, 2010 at 2:37 PM, Matthias Bolte < matthias.bolte@googlemail.com> wrote:
This XML snippet should work
<volume> <name>test_vm/test_vm.vmdk</name> <allocation>0</allocation> <capacity unit='G'>2</capacity> </volume>
The error message says that the volume name doesn't have the expected format <directory>/<file>. The <> might be misleading here, they don't refer to XML elements.
I can probably relax this and allow files in the datastore root. The problem with a .vmdk file in the datastore root is that ESX doesn't allow a virtual machine to be registered (or defined in libvirt terms) in the datastore root. The typical layout is to have a subdirectory per virtual machine.
Matthias
2010/12/2 Sherif Nagy <sherif.nagy@gmail.com>:
The XML i am trying to use is
"<volume><name>test_vm.vmdk</name><key></key><allocation>0</allocation><capacity
unit='G'>2</capacity></volume>"
or
unit='G'>2</capacity></volume>"
and if i added directory and file directive i am still getting the same error, i am not sure if i am doing something wrong or it is a bug , can someone please advice me what is the correct XML structure for creating volume using the ESX driver ?
Thank You Regards, Sherif
On Thu, Dec 2, 2010 at 2:04 PM, Justin Clift <jclift@redhat.com> wrote:
Matthias, sounds like there's a bug or we need to update the docs?
On 02/12/2010, at 11:02 PM, Sherif Nagy wrote:
yes i am using same template like KVM but it is not working, seems ESX driver has a different XML structure since it is using datatstore /dir/filename.vdk structure.
so any idea what is the XML structure for creating the XML for volumes using the ESX driver?
On Thu, Dec 2, 2010 at 12:48 PM, Justin Clift <jclift@redhat.com>
wrote:
On 02/12/2010, at 8:18 PM, Sherif Nagy wrote:
Hello,
I am using libvirt 0.8.6 "python bindings " can someone point me to where i find the XML description of creating volumes using storagecolumecreateXML function ? i am getting libvir: ESX error : internal error Volume name 'nameXXXX.vmdk' doesn't have expected format '<directory>/<file>'
Hi Sherif,
In theory, it's probably supposed to work with the "standard" storage and pool XML format documented here:
http://libvirt.org/formatstorage.html
But, it sounds like in practise that's not working for you. Is that
"<volume><name>test_vm.vmdk</name><directory>test_vm<file>test_vm.vmdk</file></directory><key></key><allocation>0</allocation><capacity the
case?
Regards and best wishes,
Justin Clift
-- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list

Works for me with the given XML config. There might be some cases that could make it fail. For example the .vmdk file already exists, or the datastore is full, or the datastore is NFS backed and the ESX server lost the connection, etc. Unfortunately libvirt doesn't include detailed information into this error message. I'm currently improving this. For now you can get detailed error information from the managed object browser (mob). You can access it here: https://<your-esx-server-name>/mob Then follow this chain of links: content > taskManager > recentTask and pick the last item in the list. It should be named like this: haTask--vim.VirtualDiskManager.createVirtualDisk-88 This is probably the failed .vmdk creation task. Then follow this second chain of links: info > error to get more detailed error information. As said the next libvirt release will include this more detailed information in error messages for failed tasks. Matthias 2010/12/2 Sherif Nagy <sherif.nagy@gmail.com>:
Great ! it did pass the error of directory/file thank you for the support now i have another problem of creating the VMDK image with this XML <volume><name>test_vm/test_vm.vmdk</name><allocation>0</allocation><capacity unit='G'>2</capacity><target><format type='vmdk'/></target></volume>
and error
libvir: ESX error : internal error Could not create volume Traceback (most recent call last): File "<stdin>", line 1, in <module> File "/usr/lib64/python2.7/site-packages/libvirt.py", line 1116, in createXML if ret is None:raise libvirtError('virStorageVolCreateXML() failed', pool=self) libvirt.libvirtError: internal error Could not create volume
may be it is an ESX server side problem or i am still missing or messing up something ?
Regards, sherif
On Thu, Dec 2, 2010 at 2:37 PM, Matthias Bolte <matthias.bolte@googlemail.com> wrote:
This XML snippet should work
<volume> <name>test_vm/test_vm.vmdk</name> <allocation>0</allocation> <capacity unit='G'>2</capacity> </volume>
The error message says that the volume name doesn't have the expected format <directory>/<file>. The <> might be misleading here, they don't refer to XML elements.
I can probably relax this and allow files in the datastore root. The problem with a .vmdk file in the datastore root is that ESX doesn't allow a virtual machine to be registered (or defined in libvirt terms) in the datastore root. The typical layout is to have a subdirectory per virtual machine.
Matthias
2010/12/2 Sherif Nagy <sherif.nagy@gmail.com>:
The XML i am trying to use is
"<volume><name>test_vm.vmdk</name><key></key><allocation>0</allocation><capacity unit='G'>2</capacity></volume>"
or
"<volume><name>test_vm.vmdk</name><directory>test_vm<file>test_vm.vmdk</file></directory><key></key><allocation>0</allocation><capacity unit='G'>2</capacity></volume>"
and if i added directory and file directive i am still getting the same error, i am not sure if i am doing something wrong or it is a bug , can someone please advice me what is the correct XML structure for creating volume using the ESX driver ?
Thank You Regards, Sherif
On Thu, Dec 2, 2010 at 2:04 PM, Justin Clift <jclift@redhat.com> wrote:
Matthias, sounds like there's a bug or we need to update the docs?
On 02/12/2010, at 11:02 PM, Sherif Nagy wrote:
yes i am using same template like KVM but it is not working, seems ESX driver has a different XML structure since it is using datatstore /dir/filename.vdk structure.
so any idea what is the XML structure for creating the XML for volumes using the ESX driver?
On Thu, Dec 2, 2010 at 12:48 PM, Justin Clift <jclift@redhat.com> wrote: On 02/12/2010, at 8:18 PM, Sherif Nagy wrote:
Hello,
I am using libvirt 0.8.6 "python bindings " can someone point me to where i find the XML description of creating volumes using storagecolumecreateXML function ? i am getting libvir: ESX error : internal error Volume name 'nameXXXX.vmdk' doesn't have expected format '<directory>/<file>'
Hi Sherif,
In theory, it's probably supposed to work with the "standard" storage and pool XML format documented here:
http://libvirt.org/formatstorage.html
But, it sounds like in practise that's not working for you. Is that the case?
Regards and best wishes,
Justin Clift
-- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list

thank you Matthias, i did follow what you said and i find the error, I am connecting to vCenter server not to ESX directly and that what i have find. Data Object Type: *NotImplemented* Parent Managed Object ID: *task-267* Property Path: *info.error* Properties Name Type Value dynamicPropertyDynamicProperty[]UnsetdynamicTypestringUnset faultCauseMethodFaultUnsetfaultMessageLocalizableMessage[]Unset seems my volume's XML needs more configurations ? Thank You, Regards, Sherif On Mon, Dec 6, 2010 at 3:42 PM, Matthias Bolte < matthias.bolte@googlemail.com> wrote:
Works for me with the given XML config.
There might be some cases that could make it fail. For example the .vmdk file already exists, or the datastore is full, or the datastore is NFS backed and the ESX server lost the connection, etc.
Unfortunately libvirt doesn't include detailed information into this error message. I'm currently improving this.
For now you can get detailed error information from the managed object browser (mob). You can access it here:
https://<your-esx-server-name>/mob
Then follow this chain of links: content > taskManager > recentTask and pick the last item in the list. It should be named like this:
haTask--vim.VirtualDiskManager.createVirtualDisk-88
This is probably the failed .vmdk creation task. Then follow this second chain of links: info > error to get more detailed error information.
As said the next libvirt release will include this more detailed information in error messages for failed tasks.
Matthias
2010/12/2 Sherif Nagy <sherif.nagy@gmail.com>:
Great ! it did pass the error of directory/file thank you for the support now i have another problem of creating the VMDK image with this XML
unit='G'>2</capacity><target><format type='vmdk'/></target></volume>
and error
libvir: ESX error : internal error Could not create volume Traceback (most recent call last): File "<stdin>", line 1, in <module> File "/usr/lib64/python2.7/site-packages/libvirt.py", line 1116, in createXML if ret is None:raise libvirtError('virStorageVolCreateXML() failed', pool=self) libvirt.libvirtError: internal error Could not create volume
may be it is an ESX server side problem or i am still missing or messing up something ?
Regards, sherif
On Thu, Dec 2, 2010 at 2:37 PM, Matthias Bolte <matthias.bolte@googlemail.com> wrote:
This XML snippet should work
<volume> <name>test_vm/test_vm.vmdk</name> <allocation>0</allocation> <capacity unit='G'>2</capacity> </volume>
The error message says that the volume name doesn't have the expected format <directory>/<file>. The <> might be misleading here, they don't refer to XML elements.
I can probably relax this and allow files in the datastore root. The problem with a .vmdk file in the datastore root is that ESX doesn't allow a virtual machine to be registered (or defined in libvirt terms) in the datastore root. The typical layout is to have a subdirectory per virtual machine.
Matthias
2010/12/2 Sherif Nagy <sherif.nagy@gmail.com>:
The XML i am trying to use is
"<volume><name>test_vm.vmdk</name><key></key><allocation>0</allocation><capacity
unit='G'>2</capacity></volume>"
or
"<volume><name>test_vm.vmdk</name><directory>test_vm<file>test_vm.vmdk</file></directory><key></key><allocation>0</allocation><capacity
unit='G'>2</capacity></volume>"
and if i added directory and file directive i am still getting the same error, i am not sure if i am doing something wrong or it is a bug , can someone please advice me what is the correct XML structure for creating volume using the ESX driver ?
Thank You Regards, Sherif
On Thu, Dec 2, 2010 at 2:04 PM, Justin Clift <jclift@redhat.com> wrote:
Matthias, sounds like there's a bug or we need to update the docs?
On 02/12/2010, at 11:02 PM, Sherif Nagy wrote:
yes i am using same template like KVM but it is not working, seems ESX driver has a different XML structure since it is using datatstore /dir/filename.vdk structure.
so any idea what is the XML structure for creating the XML for volumes using the ESX driver?
On Thu, Dec 2, 2010 at 12:48 PM, Justin Clift <jclift@redhat.com> wrote: On 02/12/2010, at 8:18 PM, Sherif Nagy wrote: > Hello, > > I am using libvirt 0.8.6 "python bindings " can someone point me
to
> where i find the XML description of creating volumes using > storagecolumecreateXML function ? i am getting libvir: ESX error : > internal > error Volume name 'nameXXXX.vmdk' doesn't have expected format > '<directory>/<file>'
Hi Sherif,
In theory, it's probably supposed to work with the "standard" storage and pool XML format documented here:
http://libvirt.org/formatstorage.html
But, it sounds like in practise that's not working for you. Is
<volume><name>test_vm/test_vm.vmdk</name><allocation>0</allocation><capacity that
the case?
Regards and best wishes,
Justin Clift
-- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list

2010/12/12 Sherif Nagy <sherif.nagy@gmail.com>
thank you Matthias, i did follow what you said and i find the error, I am connecting to vCenter server not to ESX directly and that what i have find.
Data Object Type: *NotImplemented*
That's the important information. The vCenter doesn't seem to implement the method to create a new volume. I wonder how a vSphere Client connected to a vCenter does volume creation. I'll have to investigate this. Matthias
Parent Managed Object ID: *task-267* Property Path: *info.error*
Properties Name Type Value dynamicPropertyDynamicProperty[]Unset dynamicTypestring UnsetfaultCauseMethodFaultUnsetfaultMessageLocalizableMessage[] Unset
seems my volume's XML needs more configurations ?
Thank You, Regards, Sherif
On Mon, Dec 6, 2010 at 3:42 PM, Matthias Bolte < matthias.bolte@googlemail.com> wrote:
Works for me with the given XML config.
There might be some cases that could make it fail. For example the .vmdk file already exists, or the datastore is full, or the datastore is NFS backed and the ESX server lost the connection, etc.
Unfortunately libvirt doesn't include detailed information into this error message. I'm currently improving this.
For now you can get detailed error information from the managed object browser (mob). You can access it here:
https://<your-esx-server-name>/mob
Then follow this chain of links: content > taskManager > recentTask and pick the last item in the list. It should be named like this:
haTask--vim.VirtualDiskManager.createVirtualDisk-88
This is probably the failed .vmdk creation task. Then follow this second chain of links: info > error to get more detailed error information.
As said the next libvirt release will include this more detailed information in error messages for failed tasks.
Matthias
2010/12/2 Sherif Nagy <sherif.nagy@gmail.com>:
Great ! it did pass the error of directory/file thank you for the support now i have another problem of creating the VMDK image with this XML
unit='G'>2</capacity><target><format type='vmdk'/></target></volume>
and error
libvir: ESX error : internal error Could not create volume Traceback (most recent call last): File "<stdin>", line 1, in <module> File "/usr/lib64/python2.7/site-packages/libvirt.py", line 1116, in createXML if ret is None:raise libvirtError('virStorageVolCreateXML() failed', pool=self) libvirt.libvirtError: internal error Could not create volume
may be it is an ESX server side problem or i am still missing or messing up something ?
Regards, sherif
On Thu, Dec 2, 2010 at 2:37 PM, Matthias Bolte <matthias.bolte@googlemail.com> wrote:
This XML snippet should work
<volume> <name>test_vm/test_vm.vmdk</name> <allocation>0</allocation> <capacity unit='G'>2</capacity> </volume>
The error message says that the volume name doesn't have the expected format <directory>/<file>. The <> might be misleading here, they don't refer to XML elements.
I can probably relax this and allow files in the datastore root. The problem with a .vmdk file in the datastore root is that ESX doesn't allow a virtual machine to be registered (or defined in libvirt terms) in the datastore root. The typical layout is to have a subdirectory per virtual machine.
Matthias
2010/12/2 Sherif Nagy <sherif.nagy@gmail.com>:
The XML i am trying to use is
"<volume><name>test_vm.vmdk</name><key></key><allocation>0</allocation><capacity
unit='G'>2</capacity></volume>"
or
"<volume><name>test_vm.vmdk</name><directory>test_vm<file>test_vm.vmdk</file></directory><key></key><allocation>0</allocation><capacity
unit='G'>2</capacity></volume>"
and if i added directory and file directive i am still getting the same error, i am not sure if i am doing something wrong or it is a bug , can someone please advice me what is the correct XML structure for creating volume using the ESX driver ?
Thank You Regards, Sherif
On Thu, Dec 2, 2010 at 2:04 PM, Justin Clift <jclift@redhat.com> wrote:
Matthias, sounds like there's a bug or we need to update the docs?
On 02/12/2010, at 11:02 PM, Sherif Nagy wrote: > yes i am using same template like KVM but it is not working, seems > ESX > driver has a different XML structure since it is using datatstore > /dir/filename.vdk structure. > > so any idea what is the XML structure for creating the XML for > volumes > using the ESX driver? > > On Thu, Dec 2, 2010 at 12:48 PM, Justin Clift <jclift@redhat.com> > wrote: > On 02/12/2010, at 8:18 PM, Sherif Nagy wrote: > > Hello, > > > > I am using libvirt 0.8.6 "python bindings " can someone point me
to
> > where i find the XML description of creating volumes using > > storagecolumecreateXML function ? i am getting libvir: ESX error : > > internal > > error Volume name 'nameXXXX.vmdk' doesn't have expected format > > '<directory>/<file>' > > Hi Sherif, > > In theory, it's probably supposed to work with the "standard" storage > and pool XML format documented here: > > http://libvirt.org/formatstorage.html > > But, it sounds like in practise that's not working for you. Is
<volume><name>test_vm/test_vm.vmdk</name><allocation>0</allocation><capacity that
> the > case? > > Regards and best wishes, > > Justin Clift >
-- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list
participants (3)
-
Justin Clift
-
Matthias Bolte
-
Sherif Nagy