docs: def list_nodes():
      '''
      List virtual machines
  
        .. code-block:: bash
  
            salt-cloud -Q
  
      '''
      session = _get_session()
      vms = session.xenapi.VM.get_all_records()
      ret = {}
      for vm in vms:
          record = session.xenapi.VM.get_record(vm)
          if not record['is_a_template'] and not record['is_control_domain']:
              try:
                  base_template_name = record['other_config']['base_template_name']
              except Exception:
                  base_template_name = None
                  log.debug(
                      'VM %s, doesnt have base_template_name attribute',
                      record['name_label']
                  )
              ret[record['name_label']] = {'id': record['uuid'],
                                           'image': base_template_name,
                                           'name': record['name_label'],
                                           'size': record['memory_dynamic_max'],
                                           'state': record['power_state'],
                                           'private_ips': get_vm_ip(record['name_label'], session),
                                           'public_ips': None}
      return ret