[ovirt-devel] Type verification for vdsm

Nir Soffer nsoffer at redhat.com
Mon Mar 7 22:15:30 UTC 2016


On Tue, Mar 8, 2016 at 12:05 AM, Piotr Kliczewski
<piotr.kliczewski at gmail.com> wrote:
> On Mon, Mar 7, 2016 at 9:42 PM, Nir Soffer <nsoffer at redhat.com> wrote:
>> On Mon, Mar 7, 2016 at 10:26 PM, Piotr Kliczewski
>> <piotr.kliczewski at gmail.com> wrote:
>>> All,
>>>
>>> I started to run type verification tests without strict mode and here
>>> are some inconsistencies:
>>> Please note that some of the entries are many times which corresponds
>>> with number of occurrances of particular issue.
>>>
>>> Host.getCapabilities
>>>
>>> - return data from vdms:
>>> Following parameters ['supportsIPv6', 'hostdevPassthrough',
>>> 'lastClientIface'] were not recognized
>>> Following parameters ['dhcpv6', 'ipv6gateway', 'gateway'] were not recognized
>>> Parameter mtu is not uint type
>>> Provided value "0" not defined in AutoNumaBalancingStatus enum for
>>> Host.getCapabilities
>>> Parameter netConfigDirty is not boolean type
>>> Following parameters ['ipv6gateway', 'dhcpv6', 'cfg', 'gateway'] were
>>> not recognized
>>> No default value specified for permhwaddr parameter in Host.getCapabilities
>>> Parameter mtu is not uint type
>>> Parameter reservedMem is not uint type
>>> Parameter cpuSpeed is not float type
>>> Required property directedPassthrough is not provided when calling
>>> Host.getCapabilities
>>> Parameter totalMemory is not uint type
>>> Parameter memSize is not uint type
>>> Parameter mode is not int type
>>> Provided parameters {'iface': 'ovirtmgmt', 'addr': '192.168.1.106',
>>> 'cfg': {'IPV6INIT': 'no', 'DEFROUTE': 'yes', 'HOTPLUG': 'no', 'MTU':
>>> '1500', 'DELAY': '0', 'NM_CONTROLLED': 'no', 'BOOTPROTO': 'dhcp',
>>> 'STP': 'off', 'DEVICE': 'ovirtmgmt', 'TYPE': 'Bridge', 'ONBOOT':
>>> 'yes'}, 'bridged': True, 'ipv6addrs':
>>> ['fe80::baca:3aff:fea9:77e2/64'], 'gateway': '192.168.1.1', 'dhcpv4':
>>> True, 'netmask': '255.255.255.0', 'dhcpv6': False, 'stp': 'off',
>>> 'ipv4addrs': ['192.168.1.106/24'], 'mtu': '1500', 'ipv6gateway': '::',
>>> 'ports': ['em1']} do not match any of union NetInfoNetwork values
>>> Parameter kvmEnabled is not boolean type
>>> Parameter liveMerge is not boolean type
>>> Parameter cpuThreads is not uint type
>>> Parameter liveSnapshot is not boolean type
>>> Following parameters ['dhcpv6'] were not recognized
>>> Parameter mtu is not uint type
>>> Parameter stp is not boolean type
>>> No default value specified for hostQos parameter in Host.getCapabilities
>>> Required property bridged is not provided when calling Host.getCapabilities
>>> Parameter guestOverhead is not uint type
>>> Parameter cpuCores is not uint type
>>> Parameter cpuSockets is not uint type
>>> Required property ipv6Supported is not provided when calling
>>> Host.getCapabilities
>>> Parameter buildtime is not string type
>>> Parameter buildtime is not string type
>>> Provided value "librbd1" not defined in SoftwarePackage enum for
>>> Host.getCapabilities
>>> Parameter buildtime is not string type
>>> Parameter buildtime is not string type
>>> Parameter buildtime is not string type
>>> Parameter buildtime is not string type
>>> Parameter buildtime is not string type
>>> Parameter buildtime is not string type
>>> Provided value "glusterfs-cli" not defined in SoftwarePackage enum for
>>> Host.getCapabilities
>>> Parameter buildtime is not string type
>>> Following parameters ['50_vmfex'] were not recognized
>>> Required property md5 is not provided when calling Host.getCapabilities
>>> Following parameters ['50_vmfex'] were not recognized
>>> Required property md5 is not provided when calling Host.getCapabilities
>>> Following parameters ['50_vmfex'] were not recognized
>>> Required property md5 is not provided when calling Host.getCapabilities
>>>
>>> Host.getHardwareInfo
>>>
>>> - return data from vdsm
>>>
>>> No default value specified for systemProductName parameter in
>>> Host.getHardwareInfo
>>> No default value specified for systemUUID parameter in Host.getHardwareInfo
>>> No default value specified for systemManufacturer parameter in
>>> Host.getHardwareInfo
>>> No default value specified for systemVersion parameter in Host.getHardwareInfo
>>> No default value specified for systemFamily parameter in Host.getHardwareInfo
>>> No default value specified for systemSerialNumber parameter in
>>> Host.getHardwareInfo
>>>
>>> Host.setMOMPolicyParameters
>>>
>>> - return data from vdsm
>>>
>>> Unsupported type dict in Host.setMOMPolicyParameters please fix
>>>
>>> Host.hostdevListByCaps
>>>
>>> - return data from vdsm
>>>
>>> The return type is not a list of HostDevices but it is a map and
>>> HostDevice do not match data sent
>>>
>>> Host.getStats
>>>
>>> - return data from vdsm
>>>
>>> Following parameters ['ksmMergeAcrossNodes', 'haStats'] were not recognized
>>> Parameter cpuUserVdsmd is not float type
>>> Parameter rxRate is not float type
>>> Parameter cpuLoad is not float type
>>> Parameter memUsed is not uint type
>>> Parameter cpuIdle is not float type
>>> Parameter txRate is not float type
>>> Parameter txDropped is not uint type
>>> Parameter elapsedTime is not uint type
>>> Parameter netConfigDirty is not boolean type
>>> Parameter rxErrors is not uint type
>>> Parameter rxRate is not float type
>>> Parameter rx is not uint type
>>> Parameter txDropped is not uint type
>>> Parameter txErrors is not uint type
>>> Parameter txRate is not float type
>>> Parameter speed is not uint type
>>> Parameter tx is not uint type
>>> Parameter rxDropped is not uint type
>>> Parameter rxErrors is not uint type
>>> Parameter rxRate is not float type
>>> Parameter rx is not uint type
>>> Parameter txDropped is not uint type
>>> Parameter txErrors is not uint type
>>> Parameter txRate is not float type
>>> Parameter speed is not uint type
>>> Parameter tx is not uint type
>>> Parameter rxDropped is not uint type
>>> Parameter rxErrors is not uint type
>>> Parameter rxRate is not float type
>>> Parameter rx is not uint type
>>> Parameter txDropped is not uint type
>>> Parameter txErrors is not uint type
>>> Parameter txRate is not float type
>>> Parameter speed is not uint type
>>> Parameter tx is not uint type
>>> Parameter rxDropped is not uint type
>>> Parameter rxErrors is not uint type
>>> Parameter rxRate is not float type
>>> Parameter rx is not uint type
>>> Parameter txDropped is not uint type
>>> Parameter txErrors is not uint type
>>> Parameter txRate is not float type
>>> Parameter speed is not uint type
>>> Parameter tx is not uint type
>>> Parameter rxDropped is not uint type
>>> Parameter rxErrors is not uint type
>>> Parameter rxRate is not float type
>>> Parameter rx is not uint type
>>> Parameter txDropped is not uint type
>>> Parameter txErrors is not uint type
>>> Parameter txRate is not float type
>>> Parameter speed is not uint type
>>> Parameter tx is not uint type
>>> Parameter rxDropped is not uint type
>>> Parameter rxErrors is not uint type
>>> Parameter rxRate is not float type
>>> Parameter rx is not uint type
>>> Parameter txDropped is not uint type
>>> Parameter txErrors is not uint type
>>> Parameter txRate is not float type
>>> Parameter speed is not uint type
>>> Parameter tx is not uint type
>>> Parameter rxDropped is not uint type
>>> Parameter cpuSys is not float type
>>> Following parameters ['nodeIndex'] were not recognized
>>> Parameter cpuSys is not float type
>>> Parameter cpuUser is not float type
>>> Required property numaNodeIndex is not provided when calling Host.getStats
>>> Parameter cpuIdle is not float type
>>> Following parameters ['nodeIndex'] were not recognized
>>> Parameter cpuSys is not float type
>>> Parameter cpuUser is not float type
>>> Required property numaNodeIndex is not provided when calling Host.getStats
>>> Parameter cpuIdle is not float type
>>> Following parameters ['nodeIndex'] were not recognized
>>> Parameter cpuSys is not float type
>>> Parameter cpuUser is not float type
>>> Required property numaNodeIndex is not provided when calling Host.getStats
>>> Parameter cpuIdle is not float type
>>> Following parameters ['nodeIndex'] were not recognized
>>> Parameter cpuSys is not float type
>>> Parameter cpuUser is not float type
>>> Required property numaNodeIndex is not provided when calling Host.getStats
>>> Parameter cpuIdle is not float type
>>> Following parameters ['nodeIndex'] were not recognized
>>> Parameter cpuSys is not float type
>>> Parameter cpuUser is not float type
>>> Required property numaNodeIndex is not provided when calling Host.getStats
>>> Parameter cpuIdle is not float type
>>> Following parameters ['nodeIndex'] were not recognized
>>> Parameter cpuSys is not float type
>>> Parameter cpuUser is not float type
>>> Required property numaNodeIndex is not provided when calling Host.getStats
>>> Parameter cpuIdle is not float type
>>> Following parameters ['nodeIndex'] were not recognized
>>> Parameter cpuSys is not float type
>>> Parameter cpuUser is not float type
>>> Required property numaNodeIndex is not provided when calling Host.getStats
>>> Parameter cpuIdle is not float type
>>> Following parameters ['nodeIndex'] were not recognized
>>> Parameter cpuSys is not float type
>>> Parameter cpuUser is not float type
>>> Required property numaNodeIndex is not provided when calling Host.getStats
>>> Parameter cpuIdle is not float type
>>> Parameter cpuUser is not float type
>>> Parameter ksmCpu is not float type
>>> Parameter memFree is not uint type
>>> Parameter free is not uint type
>>> Parameter free is not uint type
>>> Parameter free is not uint type
>>> Parameter free is not uint type
>>> Parameter cpuSysVdsmd is not float type
>>> Required property haStatus is not provided when calling Host.getStats
>>> Parameter bootTime is not uint type
>>> Parameter rxDropped is not uint type
>>> Parameter anonHugePages is not uint type
>>>
>>> StoragePool.disconnectStorageServer
>>>
>>> - request data
>>>
>>> Provided value "1" not defined in StorageDomainType enum for
>>> StoragePool.disconnectStorageServer
>>> Provided parameters {u'id': u'9228a1f7-5311-4136-86eb-87a4f916616e',
>>> u'connection': u'1.1.1.1:/export/data', u'iqn': u'', u'user': u'',
>>> u'tpgt': u'1', u'protocol_version': u'3', u'password': '********',
>>> u'port': u''} do not match any of union ConnectionRefParameters values
>>
>> Yes, this is a known issue, engine sends the enum value instead of the
>> name, making
>> debugging much harder. Unfortunately, we cannot fix this because we
>> must be compatible
>> with older engines.
>>
>> I think we will provide a new verb requiring the correct type, and
>> deprecate the old verb.
>>
>
> What do you think about changing schema to define proper types. We
> can't change the
> data but we can have consistent definition of it.

I'll check this direction.

>
>>>
>>> StorageDomain.create
>>>
>>> - request data
>>>
>>> Provided value "1" not defined in StorageDomainType enum for
>>> StorageDomain.create
>>> Parameter typeArgs is defined as StorageDomainCreateArguments but it is a string
>>
>> Same
>>
>>>
>>> StoragePool.connectStorageServer
>>>
>>> - request data
>>>
>>> Provided value "1" not defined in StorageDomainType enum for
>>> StoragePool.connectStorageServer
>>> Provided parameters {u'id': u'9228a1f7-5311-4136-86eb-87a4f916616e',
>>> u'connection': u'1.1.1.1:/export/data', u'iqn': u'', u'user': u'',
>>> u'tpgt': u'1', u'protocol_version': u'3', u'password': '********',
>>> u'port': u''} do not match any of union ConnectionRefParameters values
>>
>> Same
>>
>>>
>>>
>>>
>>> Many more verbs to come.
>>>
>>> It seems that there is more verbs which do not comply with schema than
>>> those that do. I am not able to progress more with the validation
>>> because StorageDomain.create and Host.hostdevListByCaps currently
>>> break validation code due to type inconsistencies. I need to make it
>>> more resilient.
>>
>> Thanks for this work!
>>
>> Nir



More information about the Devel mailing list