docs: def setmem(vm_, memory, config=False, **kwargs):
      '''
      Changes the amount of memory allocated to VM. The VM must be shutdown
      for this to work.
  
      :param vm_: name of the domain
      :param memory: memory amount to set in MB
      :param config: if True then libvirt will be asked to modify the config as well
      :param connection: libvirt connection URI, overriding defaults
  
          .. versionadded:: 2019.2.0
      :param username: username to connect with, overriding defaults
  
          .. versionadded:: 2019.2.0
      :param password: password to connect with, overriding defaults
  
          .. versionadded:: 2019.2.0
  
      CLI Example:
  
      .. code-block:: bash
  
          salt '*' virt.setmem <domain> <size>
          salt '*' virt.setmem my_domain 768
      '''
      conn = __get_conn(**kwargs)
      dom = _get_domain(conn, vm_)
  
      if VIRT_STATE_NAME_MAP.get(dom.info()[0], 'unknown') != 'shutdown':
          return False
  
      # libvirt has a funny bitwise system for the flags in that the flag
      # to affect the "current" setting is 0, which means that to set the
      # current setting we have to call it a second time with just 0 set
      flags = libvirt.VIR_DOMAIN_MEM_MAXIMUM
      if config:
          flags = flags | libvirt.VIR_DOMAIN_AFFECT_CONFIG
  
      ret1 = dom.setMemoryFlags(memory * 1024, flags)
      ret2 = dom.setMemoryFlags(memory * 1024, libvirt.VIR_DOMAIN_AFFECT_CURRENT)
  
      conn.close()
  
      # return True if both calls succeeded
      return ret1 == ret2 == 0