>> We need to design interfaces in it from requirement from user.

Yes, this is important, it must meet these requirements first.

>> So, I think the get_first_mac is a high-level interface and requirement of user, we need to implement it in VMXML but not in 
>> VMXMLBase.

Oh right, of course, yes I missed the distinction between ``VMXML`` and ``VMXMLBase``.  Yes, I'd like to keep all the property-handling code inside ``base`` and higher-level utility-stuff in ``VMXML``.  However, I want to be careful about putting too many utilities, when using the property interface is more generic and generally useful.  It's fine for a test-module to subclass VMXML also and put whatever methods it wants in there :)