code: def grains():
      '''
      Get the grains from the proxied device
      '''
      if not DETAILS.get('grains_cache', {}):
          DETAILS['grains_cache'] = GRAINS_CACHE
          try:
              compute_rack = get_config_resolver_class('computeRackUnit', False)
              DETAILS['grains_cache'] = compute_rack['outConfigs']['computeRackUnit']
          except salt.exceptions.CommandExecutionError:
              pass
          except Exception as err:
              log.error(err)
      return DETAILS['grains_cache'f grains():
      '''
      Get the grains from the proxied device
      '''
      if not DETAILS.get('grains_cache', {}):
          DETAILS['grains_cache'] = GRAINS_CACHE
          try:
              compute_rack = get_config_resolver_class('computeRackUnit', False)
              DETAILS['grains_cache'] = compute_rack['outConfigs']['computeRackUnit']
          except salt.exceptions.CommandExecutionError:
              pass
          except Exception as err:
              log.error(err)
      return DETAILS['grains_cache']
docs: Get the grains from the proxied device