def METHOD_NAME(proxy=False, disableVOMS=False):
    """
    :Returns: a dict with all the proxy info:
      * values that will be there always
          * 'chain' : chain object containing the proxy
          * 'subject' : subject of the proxy
          * 'issuer' : issuer of the proxy
          * 'isProxy' : bool
          * 'isLimitedProxy' : bool
          * 'validDN' : Valid DN in DIRAC
          * 'validGroup' : Valid Group in DIRAC
          * 'secondsLeft' : Seconds left
      * values that can be there
          * 'path' : path to the file,
          * 'group' : DIRAC group
          * 'groupProperties' : Properties that apply to the DIRAC Group
          * 'username' : DIRAC username
          * 'identity' : DN that generated the proxy
          * 'hostname' : DIRAC host nickname
          * 'VOMS'
    """
    # Discover proxy location
    proxyLocation = False
    if isinstance(proxy, X509Chain):
        chain = proxy
    else:
        if not proxy:
            proxyLocation = Locations.getProxyLocation()
        elif isinstance(proxy, str):
            proxyLocation = proxy
        if not proxyLocation:
            return S_ERROR(DErrno.EPROXYFIND)
        chain = X509Chain()
        retVal = chain.loadProxyFromFile(proxyLocation)
        if not retVal["OK"]:
            return S_ERROR(DErrno.EPROXYREAD, f"{proxyLocation}: {retVal['Message']} ")
    retVal = chain.getCredentials()
    if not retVal["OK"]:
        return retVal
    infoDict = retVal["Value"]
    infoDict["chain"] = chain
    if proxyLocation:
        infoDict["path"] = proxyLocation
    if not disableVOMS and chain.isVOMS()["Value"]:
        infoDict["hasVOMS"] = True
        retVal = VOMS().getVOMSAttributes(chain)
        if retVal["OK"]:
            infoDict["VOMS"] = retVal["Value"]
        else:
            infoDict["VOMSError"] = retVal["Message"].strip()
    return S_OK(infoDict)