docs: def list_vms(search=None, verbose=False):
      '''
      List all vms
  
      search : string
          filter vms, see the execution module
      verbose : boolean
          print additional information about the vm
  
      CLI Example:
  
      .. code-block:: bash
  
          salt-run vmadm.list
          salt-run vmadm.list search='type=KVM'
          salt-run vmadm.list verbose=True
      '''
      ret = OrderedDict() if verbose else []
      client = salt.client.get_local_client(__opts__['conf_file'])
      try:
          vmadm_args = {}
          vmadm_args['order'] = 'uuid,alias,hostname,state,type,cpu_cap,vcpus,ram'
          if search:
              vmadm_args['search'] = search
          for cn in client.cmd_iter('G@virtual:physical and G@os:smartos',
                                    'vmadm.list', kwarg=vmadm_args,
                                    tgt_type='compound'):
              if not cn:
                  continue
              node = next(six.iterkeys(cn))
              if not isinstance(cn[node], dict) or \
                      'ret' not in cn[node] or \
                      not isinstance(cn[node]['ret'], dict):
                  continue
              for vm in cn[node]['ret']:
                  vmcfg = cn[node]['ret'][vm]
                  if verbose:
                      ret[vm] = OrderedDict()
                      ret[vm]['hostname'] = vmcfg['hostname']
                      ret[vm]['alias'] = vmcfg['alias']
                      ret[vm]['computenode'] = node
                      ret[vm]['state'] = vmcfg['state']
                      ret[vm]['resources'] = OrderedDict()
                      ret[vm]['resources']['memory'] = vmcfg['ram']
                      if vmcfg['type'] == 'KVM':
                          ret[vm]['resources']['cpu'] = "{0:.2f}".format(int(vmcfg['vcpus']))
                      else:
                          if vmcfg['cpu_cap'] != '':
                              ret[vm]['resources']['cpu'] = "{0:.2f}".format(int(vmcfg['cpu_cap'])/100)
                  else:
                      ret.append(vm)
      except SaltClientError as client_error:
          return "{0}".format(client_error)
  
      if not verbose:
          ret = sorted(ret)
  
      return ret