"Reserving" agent licenses for docker cloud images


I'm currently using Cloud Profiles with docker Agent Images to manage container-based TeamCity Agents. This works fine, except we often find that one or more Build Pools will shut down all of their Agents (due to inactivity, for example), and all of the freed-up licenses get consumed by other busy Build Pools. As a result, when a new build is queued on the idle Pool it's unable to start any Agents due to license starvation, and an entire development team is blocked.

In addition to the "Maximum instance count" setting on the details page of each Agent Image, it would be really helpful to be able to "reserve" a minimum number of licenses. For example:

My Cloud Profile 1

  • My Agent Image 1 - reserved licenses = 2, max instances = 7
  • My Agent Image 2 - reserved licenses = 1, max instances = 2
  • My Agent Image 3 - reserved licenses = 2, max instances = 5
  • My Agent Image 4 - reserved licenses = 3, max instances = 10
  • My Agent Image 5 - reserved licenses = 2, max instances = 5

That way, if a server has, say 20 licenses, I can ensure that every image will always be able to spin a minimum number of instances using the "reserved" licenses, even if all of the remaining licenses have been consumed by the other images.

It would still have the main benefit of licenses being able to float between pools based on demand, but it would also guarantee a minimum quality-of-service or each Pool when the server is busy. And if administrators didn't want to use this setting they could just leave it at 0.




Please sign in to leave a comment.