Compile pillar and set it to the cache, if not found.

        :param args:
        :param kwargs:
        :return:

def compile_pillar(self, *args, **kwargs):  # Will likely just be pillar_dirs
        '''
        Compile pillar and set it to the cache, if not found.

        :param args:
        :param kwargs:
        :return:
        '''
        log.debug('Scanning pillar cache for information about minion %s and pillarenv %s', self.minion_id, self.pillarenv)
        log.debug('Scanning cache for minion %s: %s', self.minion_id, self.cache[self.minion_id] or '*empty*')

        # Check the cache!
        if self.minion_id in self.cache:  # Keyed by minion_id
            # TODO Compare grains, etc?
            if self.pillarenv in self.cache[self.minion_id]:
                # We have a cache hit! Send it back.
                log.debug('Pillar cache hit for minion %s and pillarenv %s', self.minion_id, self.pillarenv)
                pillar_data = self.cache[self.minion_id][self.pillarenv]
            else:
                # We found the minion but not the env. Store it.
                pillar_data = self.fetch_pillar()
                self.cache[self.minion_id][self.pillarenv] = pillar_data
                self.cache.store()
                log.debug('Pillar cache miss for pillarenv %s for minion %s', self.pillarenv, self.minion_id)
        else:
            # We haven't seen this minion yet in the cache. Store it.
            pillar_data = self.fetch_pillar()
            self.cache[self.minion_id] = {self.pillarenv: pillar_data}
            log.debug('Pillar cache has been added for minion %s', self.minion_id)
            log.debug('Current pillar cache: %s', self.cache[self.minion_id])

        # we dont want the pillar_override baked into the cached fetch_pillar from above
        if self.pillar_override:
            pillar_data = merge(
                pillar_data,
                self.pillar_override,
                self.opts.get('pillar_source_merging_strategy', 'smart'),
                self.opts.get('renderer', 'yaml'),
                self.opts.get('pillar_merge_lists', False))
            pillar_data.update(self.pillar_override)

        return pillar_data