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