func getUsedTools(model description.Model) []params.SerializedModelTools { // 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 relied on here. for _, machine := range model.Machines() { addToolsVersionForMachine(machine, usedVersions) } for _, application := range model.Applications() { for _, unit := range application.Units() { tools := unit.Tools() usedVersions[tools.Version()] = true } } out := make([]params.SerializedModelTools, 0, len(usedVersions)) for v := range usedVersions { out = append(out, params.SerializedModelTools{ Version: v.String(), URI: common.ToolsURL("", v), }) } return out }
func getUsedCharms(model description.Model) []string { result := set.NewStrings() for _, application := range model.Applications() { result.Add(application.CharmURL()) } return result.Values() }