code: def _retrieve_grains_cache(proxy=None):
      '''
      Retrieves the grains from the network device if not cached already.
      '''
      global GRAINS_CACHE
      if not GRAINS_CACHE:
          if proxy and salt.utils.napalm.is_proxy(__opts__):
              # if proxy var passed and is NAPALM-type proxy minion
              GRAINS_CACHE = proxy['napalm.get_grains']()
          elif not proxy and salt.utils.napalm.is_minion(__opts__):
              # if proxy var not passed and is running in a straight minion
              GRAINS_CACHE = salt.utils.napalm.call(
                  DEVICE_CACHE,
                  'get_facts',
                  **{}
              )
      return GRAINS_CACHf _retrieve_grains_cache(proxy=None):
      '''
      Retrieves the grains from the network device if not cached already.
      '''
      global GRAINS_CACHE
      if not GRAINS_CACHE:
          if proxy and salt.utils.napalm.is_proxy(__opts__):
              # if proxy var passed and is NAPALM-type proxy minion
              GRAINS_CACHE = proxy['napalm.get_grains']()
          elif not proxy and salt.utils.napalm.is_minion(__opts__):
              # if proxy var not passed and is running in a straight minion
              GRAINS_CACHE = salt.utils.napalm.call(
                  DEVICE_CACHE,
                  'get_facts',
                  **{}
              )
      return GRAINS_CACHE
docs: Retrieves the grains from the network device if not cached already.