[libvirt] [PATCH] schema: Allow multiple machines for sparc VMs

Prerna Saxena prerna at linux.vnet.ibm.com
Wed Apr 15 10:55:11 UTC 2015


On Monday 13 April 2015 07:50 PM, Daniel P. Berrange wrote:
> On Mon, Apr 13, 2015 at 04:14:53PM +0200, Martin Kletzander wrote:
>> Use the same pattern as there is for x86 machines.
>>
>> Signed-off-by: Martin Kletzander <mkletzan at redhat.com>
>> ---
>>  docs/schemas/domaincommon.rng | 4 +++-
>>  1 file changed, 3 insertions(+), 1 deletion(-)
>>
>> diff --git a/docs/schemas/domaincommon.rng b/docs/schemas/domaincommon.rng
>> index 03fd541..80b30df 100644
>> --- a/docs/schemas/domaincommon.rng
>> +++ b/docs/schemas/domaincommon.rng
>> @@ -384,7 +384,9 @@
>>        </optional>
>>        <optional>
>>          <attribute name="machine">
>> -          <value>sun4m</value>
>> +          <data type="string">
>> +            <param name="pattern">[a-zA-Z0-9_\.\-]+</param>
>> +          </data>
>>          </attribute>
>>        </optional>
>>      </group>
> I think you could probably simplify this all much more. All these
> architecture  specific blocks of machine type names should just be
> deleted and so this:
>
>   <define name="ostypehvm">
>     <element name="type">
>       <optional>
>         <choice>
>           <ref name="hvmx86"/>
>           <ref name="hvmmips"/>
>           <ref name="hvmsparc"/>
>           <ref name="hvmppc"/>
>           <ref name="hvmppc64"/>
>           <ref name="hvms390"/>
>           <ref name="hvmarm"/>
>           <ref name="hvmaarch64"/>
>         </choice>
>       </optional>
>       <value>hvm</value>
>     </element>
>   </define>
>
> Would simplify to just
>
>   <define name="ostypehvm">
>     <element name="type">
>       <optional>
>         <attribute name="arch">
>           <choice>
>             <value>i686</value>
> 	    ....others...
>           </choice>
>         </attribute>
>       </optional>
>       <optional>
>         <attribute name="machine">
>           <data type="string">
>             <param name="pattern">[a-zA-Z0-9_\.\-]+</param>
>           </data>
>         </attribute>
>       </optional>
>     </element>
>   </define>
Hi Martin, Daniel,
I have not been able to try this patch, it fails with this error :

error: internal error: Unable to parse RNG /test-libvirt/share/libvirt/schemas/domain.rng: Reference osexe has no matching definition
Internal found no define for ref osexe

However, had some concerns purely by looking at this patch. This change is very x86-centric, it does not respect other architectures.
I think the rationale for simplifying domaincommon.rng would have been to group all types that obey this pattern string:

<param name="pattern">[a-zA-Z0-9_\.\-]+</param>


However, this regex does not conform to machine types for _all_ architectures.
As an example, see this :
<define name="hvms390">
    <group>
      <optional>
        <attribute name="arch">
          <choice>
            <value>s390</value>
            <value>s390x</value>
          </choice>
        </attribute>
      </optional>
      <optional>
        <attribute name="machine">
          <choice>
            <value>s390</value>
            <value>s390-virtio</value>
            <value>s390-ccw</value>
            <value>s390-ccw-virtio</value>
          </choice>
        </attribute>
      </optional>
    </group>
  </define>

The s390 arch only allows four machine names : "s390", "s390-virtio", "s390-ccw", "s390-ccw-virtio".
With the patch you suggest, even a string such as "abcdefg" will become a legitimate machine type for s390x, which seems like an odd thing.
Likewise, ppc64[le] architecture allows only strings such as pseries, pseries-2.1, pseries-2.2 ..
This patch will allow any random machine name, which seems somewhat odd to me.

Regards,

-- 
Prerna Saxena

Linux Technology Centre,
IBM Systems and Technology Lab,
Bangalore, India




More information about the libvir-list mailing list