docs: def get_content(service_instance, obj_type, property_list=None,
                  container_ref=None, traversal_spec=None,
                  local_properties=False):
      '''
      Returns the content of the specified type of object for a Service Instance.
  
      For more information, please see:
      http://pubs.vmware.com/vsphere-50/index.jsp?topic=%2Fcom.vmware.wssdk.pg.doc_50%2FPG_Ch5_PropertyCollector.7.6.html
  
      service_instance
          The Service Instance from which to obtain content.
  
      obj_type
          The type of content to obtain.
  
      property_list
          An optional list of object properties to used to return even more filtered content results.
  
      container_ref
          An optional reference to the managed object to search under. Can either be an object of type Folder, Datacenter,
          ComputeResource, Resource Pool or HostSystem. If not specified, default behaviour is to search under the inventory
          rootFolder.
  
      traversal_spec
          An optional TraversalSpec to be used instead of the standard
          ``Traverse All`` spec.
  
      local_properties
          Flag specifying whether the properties to be retrieved are local to the
          container. If that is the case, the traversal spec needs to be None.
      '''
      # Start at the rootFolder if container starting point not specified
      if not container_ref:
          container_ref = get_root_folder(service_instance)
  
      # By default, the object reference used as the starting poing for the filter
      # is the container_ref passed in the function
      obj_ref = container_ref
      local_traversal_spec = False
      if not traversal_spec and not local_properties:
          local_traversal_spec = True
          # We don't have a specific traversal spec override so we are going to
          # get everything using a container view
          try:
              obj_ref = service_instance.content.viewManager.CreateContainerView(
                  container_ref, [obj_type], True)
          except vim.fault.NoPermission as exc:
              log.exception(exc)
              raise salt.exceptions.VMwareApiError(
                  'Not enough permissions. Required privilege: '
                  '{}'.format(exc.privilegeId))
          except vim.fault.VimFault as exc:
              log.exception(exc)
              raise salt.exceptions.VMwareApiError(exc.msg)
          except vmodl.RuntimeFault as exc:
              log.exception(exc)
              raise salt.exceptions.VMwareRuntimeError(exc.msg)
  
          # Create 'Traverse All' traversal spec to determine the path for
          # collection
          traversal_spec = vmodl.query.PropertyCollector.TraversalSpec(
              name='traverseEntities',
              path='view',
              skip=False,
              type=vim.view.ContainerView
          )
  
      # Create property spec to determine properties to be retrieved
      property_spec = vmodl.query.PropertyCollector.PropertySpec(
          type=obj_type,
          all=True if not property_list else False,
          pathSet=property_list
      )
  
      # Create object spec to navigate content
      obj_spec = vmodl.query.PropertyCollector.ObjectSpec(
          obj=obj_ref,
          skip=True if not local_properties else False,
          selectSet=[traversal_spec] if not local_properties else None
      )
  
      # Create a filter spec and specify object, property spec in it
      filter_spec = vmodl.query.PropertyCollector.FilterSpec(
          objectSet=[obj_spec],
          propSet=[property_spec],
          reportMissingObjectsInResults=False
      )
  
      # Retrieve the contents
      try:
          content = service_instance.content.propertyCollector.RetrieveContents([filter_spec])
      except vim.fault.NoPermission as exc:
          log.exception(exc)
          raise salt.exceptions.VMwareApiError(
              'Not enough permissions. Required privilege: '
              '{}'.format(exc.privilegeId))
      except vim.fault.VimFault as exc:
          log.exception(exc)
          raise salt.exceptions.VMwareApiError(exc.msg)
      except vmodl.RuntimeFault as exc:
          log.exception(exc)
          raise salt.exceptions.VMwareRuntimeError(exc.msg)
  
      # Destroy the object view
      if local_traversal_spec:
          try:
              obj_ref.Destroy()
          except vim.fault.NoPermission as exc:
              log.exception(exc)
              raise salt.exceptions.VMwareApiError(
                  'Not enough permissions. Required privilege: '
                  '{}'.format(exc.privilegeId))
          except vim.fault.VimFault as exc:
              log.exception(exc)
              raise salt.exceptions.VMwareApiError(exc.msg)
          except vmodl.RuntimeFault as exc:
              log.exception(exc)
              raise salt.exceptions.VMwareRuntimeError(exc.msg)
  
      return content