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  }