docs: def _parse_cgroup_file(self, stat_file):
          """Parse a cgroup pseudo file for key/values."""
          self.log.debug("Opening cgroup file: %s" % stat_file)
          try:
              with open(stat_file, 'r') as fp:
                  if 'blkio' in stat_file:
                      return self._parse_blkio_metrics(fp.read().splitlines())
                  elif 'cpuacct.usage' in stat_file:
                      return dict({'usage': str(int(fp.read())/10000000)})
                  elif 'memory.soft_limit_in_bytes' in stat_file:
                      value = int(fp.read())
                      # do not report kernel max default value (uint64 * 4096)
                      # see https://github.com/torvalds/linux/blob/5b36577109be007a6ecf4b65b54cbc9118463c2b/mm/memcontrol.c#L2844-L2845
                      # 2 ** 60 is kept for consistency of other cgroups metrics
                      if value < 2 ** 60:
                          return dict({'softlimit': value})
                  elif 'cpu.shares' in stat_file:
                      value = int(fp.read())
                      return {'shares': value}
                  else:
                      return dict(map(lambda x: x.split(' ', 1), fp.read().splitlines()))
          except IOError:
              # It is possible that the container got stopped between the API call and now.
              # Some files can also be missing (like cpu.stat) and that's fine.
              self.log.debug("Can't open %s. Its metrics will be missing." % stat_file)