Hi all,

I have been trying to find out cpu topology using libvirt. When
I do 'virsh capabilites', I find this inside <topology> tag:

<topology>
      <cells num='1'>
        <cell id='0'>
          <memory unit='KiB'>3908488</memory>
          <cpus num='4'>
            <cpu id='0' socket_id='0' core_id='0' siblings='0'/>
            <cpu id='1' socket_id='0' core_id='0' siblings='1'/>
            <cpu id='2' socket_id='0' core_id='1' siblings='2'/>
            <cpu id='3' socket_id='0' core_id='1' siblings='3'/>
          </cpus>
        </cell>
      </cells>
</topology>

But when I use the 'getCapbilities()' function of the python binding,
the result is:
<topology>    
  <cells num='1'>   
     <cell id='0'>         
     <cpus num='4'>   
       <cpu id='0'/>
       <cpu id='1'/>
       <cpu id='2'/>
       <cpu id='3'/>         
     </cpus>        
   </cell>      
 </cells>  
</topology>\n

As you can see this doesnt give any information about socket/core/thread etc.
What I an interested to know is that is it a limitation of python binding or libvirt
C API itself? How can I get the whole topology without just parsing the output
of virsh capabilities?

Thanks.
~Peeyush Gupta