code: def _get_or_fetch_id(self, zobj, fetch_func):
          
  
          try:
              return zobj.id
          except AttributeError:
              try:
                  return fetch_func(zobj).id
              except AttributeError:
                  raise ValueError('Unqualified Resource')
docs: Returns the ID of a Zobject wether it's already known or not
  
          If zobj.id is not known (frequent if zobj is a selector), fetches first
          the object and then returns its ID.
  
          :type zobj:       a zobject subclass
          :type fetch_func: the function to fetch the zobj from server if its id
                            is undefined.
          :returns:         the object id