[ovirt-devel] Type verification for vdsm

Nir Soffer nsoffer at redhat.com
Mon Mar 7 20:42:47 UTC 2016


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.

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