code: def WaitUntilComplete(self,poll_freq=2,timeout=None):
  		
  
  		start_time = time.time()
  		while len(self.requests):
  			cur_requests = []
  			for request in self.requests:
  				status = request.Status()
  				if status in ('notStarted','executing','resumed','queued','running'): cur_requests.append(request)
  				elif status == 'succeeded': self.success_requests.append(request)
  				elif status in ("failed", "unknown"): self.error_requests.append(request)
  
  			self.requests = cur_requests
  			if self.requests > 0 and clc.v2.time_utils.TimeoutExpired(start_time, timeout):
  				raise clc.RequestTimeoutException('Timeout waiting for Requests: {0}'.format(self.requests[0].id),
  				                                  self.requests[0].Status())
  
  			time.sleep(poll_freq)	# alternately - sleep for the delta between start time and 2s
  
  		# Is this the best approach?  Non-zero indicates some error.  Exception seems the wrong approach for
  		# a partial failure
  		return(len(self.error_requests))
docs: Poll until all request objects have completed.
  
  		If status is 'notStarted' or 'executing' continue polling.
  		If status is 'succeeded' then success
  		Else log as error
  
  		poll_freq option is in seconds
  
  		Returns an Int the number of unsuccessful requests.  This behavior is subject to change.
  
  		>>> clc.v2.Server(alias='BTDI',id='WA1BTDIKRT02').PowerOn().WaitUntilComplete()
  		0