github.com/juju/juju@v0.0.0-20240430160146-1752b71fcf00/core/base/testing.go (about) 1 // Copyright 2021 Canonical Ltd. 2 // Licensed under the AGPLv3, see LICENCE file for details. 3 4 package base 5 6 import "sort" 7 8 // These methods are used only in various tests. 9 10 // SupportedLts are the current supported LTS series in ascending order. 11 func SupportedLts() []string { 12 seriesVersionsMutex.Lock() 13 defer seriesVersionsMutex.Unlock() 14 updateSeriesVersionsOnce() 15 16 versions := []string{} 17 for _, version := range ubuntuSeries { 18 if !version.LTS || !version.Supported { 19 continue 20 } 21 versions = append(versions, version.Version) 22 } 23 sort.Strings(versions) 24 sorted := []string{} 25 for _, v := range versions { 26 sorted = append(sorted, versionSeries[v]) 27 } 28 return sorted 29 } 30 31 // ESMSupportedJujuSeries returns a slice of just juju extended security 32 // maintenance supported ubuntu series. 33 func ESMSupportedJujuSeries() []string { 34 seriesVersionsMutex.Lock() 35 defer seriesVersionsMutex.Unlock() 36 updateSeriesVersionsOnce() 37 var series []string 38 for s, version := range ubuntuSeries { 39 if !version.ESMSupported { 40 continue 41 } 42 series = append(series, string(s)) 43 } 44 return series 45 } 46 47 // SupportedJujuWorkloadSeries returns a slice of juju supported series that 48 // target a workload (deploying a charm). 49 func SupportedJujuWorkloadSeries() []string { 50 seriesVersionsMutex.Lock() 51 defer seriesVersionsMutex.Unlock() 52 updateSeriesVersionsOnce() 53 var series []string 54 for s, version := range allSeriesVersions { 55 if !version.Supported || version.WorkloadType == UnsupportedWorkloadType { 56 continue 57 } 58 series = append(series, string(s)) 59 } 60 return series 61 }