code: def execute_request(conn, classname, max_open, max_pull):
      
      start = ElapsedTimer()
      result = conn.OpenEnumerateInstances(classname,
                                           MaxObjectCount=max_open)
  
  
      print('open rtn eos=%s context=%s, count=%s time=%s ms' %
            (result.eos, result.context, len(result.instances),
             start.elapsed_ms()))
  
      # save instances since we reuse result
      insts = result.instances
  
      # loop to make pull requests until end_of_sequence received.
      pull_count = 0
      while not result.eos:
          pull_count += 1
          op_start = ElapsedTimer()
          result = conn.PullInstancesWithPath(result.context,
                                              MaxObjectCount=max_pull)
  
          insts.extend(result.instances)
  
          print('pull rtn eos=%s context=%s, insts=%s time=%s ms' %
                (result.eos, result.context, len(result.instances),
                 op_start.elapsed_ms()))
  
  
      print('Result instance count=%s pull count=%s time=%.2f sec' % \
            (len(insts), pull_count, start.elapsed_sec()))
      return insts
docs: Enumerate instances defined by the function's
          classname argument using the OpenEnumerateInstances and
          PullInstancesWithPath.
  
          * classname - Classname for the enumeration.
  
          * max_open - defines the maximum number of instances
            for the server to return for the open
  
          *max_pull defines the maximum number of instances for the
            WBEM server to return for each pull operation.
  
          Displays results of each open or pull operation including
          size, return parameters, and time to execute.
  
          Any exception exits the function.