code: def __AddWorkers(self, num_to_add):
                      
      # Check preconditions
      assert(self.__IsWebUiReady())
      zone_to_ips = self.__GetZoneToWorkerIpsTable()    
      zone_old_new = []
      for zone, ips in zone_to_ips.iteritems():
        num_nodes_in_zone = len(ips) 
        num_nodes_to_add = 0
        zone_old_new.append((zone, num_nodes_in_zone, num_nodes_to_add))    
      print 'num_to_add %s' % num_to_add
      for _ in range(num_to_add):
        zone_old_new.sort(key= lambda z : z[1]+z[2])
        zt = zone_old_new[0]
        zone_old_new[0] = (zt[0], zt[1], zt[2]+1)
      #print zone_old_new
      zone_plan = [(zt[2], zt[0]) for zt in zone_old_new]
      print 'resize plan'
      if self.config.workers_on_spot_instances:
        new_worker_instances = self.__LaunchSpotWorkerInstances(zone_plan)
      else:  
        new_worker_instances = self.__LaunchOnDemandWorkerInstances(zone_plan)
      self.__WaitForInstancesReachable(new_worker_instances)
      self.__ConfigureWorkers(new_worker_instances)
      return
docs: Adds workers evenly across all enabled zones.