[ovirt-devel] Type verification for vdsm

Piotr Kliczewski piotr.kliczewski at gmail.com
Mon Mar 7 20:26:41 UTC 2016


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

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

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



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,
Piotr

On Thu, Mar 3, 2016 at 5:37 PM, Piotr Kliczewski
<piotr.kliczewski at gmail.com> wrote:
> All,
>
> I am working on converting our vdsm schema to yaml. As part of this
> work [1] I added type verification for request and response data.
> There was a suggestion to raise an exception when there is type
> inconsistency but after a bit of testing I can see that there are
> inconsistencies for many verbs.
>
> I introduced strict mode config value which switches between raising
> exception and logging a warning. At the moment we log inconsistencies
> but there is a plan to be strict for master and log for stable
> branches.
>
> I would like to ask each vertical representative/maintainer to review
> the code and fix any inconsistencies in the schema.
>
> Thanks,
> Piotr
>
> [1] https://gerrit.ovirt.org/#/c/53919



More information about the Devel mailing list