docs: def gather_cache(self):
          '''
          Gather the specified data from the minion data cache
          '''
          cache = {'grains': {}, 'pillar': {}}
          if self.grains or self.pillar:
              if self.opts.get('minion_data_cache'):
                  minions = self.cache.list('minions')
                  if not minions:
                      return cache
                  for minion in minions:
                      total = self.cache.fetch('minions/{0}'.format(minion), 'data')
  
                      if 'pillar' in total:
                          if self.pillar_keys:
                              for key in self.pillar_keys:
                                  if key in total['pillar']:
                                      cache['pillar'][minion][key] = total['pillar'][key]
                          else:
                              cache['pillar'][minion] = total['pillar']
                      else:
                          cache['pillar'][minion] = {}
  
                      if 'grains' in total:
                          if self.grain_keys:
                              for key in self.grain_keys:
                                  if key in total['grains']:
                                      cache['grains'][minion][key] = total['grains'][key]
                          else:
                              cache['grains'][minion] = total['grains']
                      else:
                          cache['grains'][minion] = {}
          return cache