func addToolsVersionForMachine(machine description.Machine, usedVersions map[version.Binary]bool) { tools := machine.Tools() usedVersions[tools.Version()] = true for _, container := range machine.Containers() { addToolsVersionForMachine(container, usedVersions) } }
func getUsedToolsVersions(model description.Model) map[version.Binary]bool { // Iterate through the model for all tools, and make a map of them. usedVersions := make(map[version.Binary]bool) // It is most likely that the preconditions will limit the number of // tools versions in use, but that is not depended on here. for _, machine := range model.Machines() { addToolsVersionForMachine(machine, usedVersions) } for _, service := range model.Services() { for _, unit := range service.Units() { tools := unit.Tools() usedVersions[tools.Version()] = true } } return usedVersions }