def list_nodes(kwargs=None, call=None):
    ret = {}
    conn = get_conn()
    property_names = ['name', 'guest.ipAddress', 'summary.config']
    result = conn._retrieve_properties_traversal(
        property_names=property_names, obj_type='VirtualMachine'
    )
    for r in result:
        vset = {
            'id': None,
            'ip_address': None,
            'cpus': None,
            'ram': None,
        }
        for p in r.PropSet:
            if p.Name == 'name':
                vset['id'] = p.Val
            if p.Name == 'guest.ipAddress':
                vset['ip_address'] = p.Val
            if p.Name == 'summary.config':
                vset['cpus'] = p.Val.NumCpu
                vset['ram'] = p.Val.MemorySizeMB
        ret[vset['id']] = vset
    return ret
Checks for the required properties and values validity.
dataset/ETHPy150Open saltstack/salt/salt/cloud/clouds/vsphere.py/list_nodes--crossover with--dataset/ETHPy150Open openstack/ironic/ironic/drivers/modules/msftocs/common.py/parse_driver_info