github.com/olli-ai/jx/v2@v2.0.400-0.20210921045218-14731b4dd448/pkg/cloud/iks/helper.go (about)

     1  package iks
     2  
     3  import (
     4  	"strconv"
     5  	"strings"
     6  
     7  	"github.com/IBM-Cloud/bluemix-go/api/container/containerv1"
     8  )
     9  
    10  const unsupportedMinorKubeVersion = 11
    11  
    12  func GetRegions(regions Regions) ([]string, error) {
    13  
    14  	regionarr, err := regions.GetRegions()
    15  
    16  	if err != nil {
    17  		return nil, err
    18  	}
    19  	strregions := make([]string, len(regionarr))
    20  
    21  	for i, region := range regionarr {
    22  		strregions[i] = region.Name
    23  	}
    24  
    25  	return strregions, nil
    26  
    27  }
    28  
    29  func GetZones(region Region, zones Zones) ([]string, error) {
    30  	zonearr, err := zones.GetZones(region)
    31  
    32  	if err != nil {
    33  		return nil, err
    34  	}
    35  	strzones := make([]string, len(zonearr))
    36  
    37  	for i, zone := range zonearr {
    38  		strzones[i] = zone.ID
    39  	}
    40  
    41  	return strzones, nil
    42  }
    43  func Filter(vs []containerv1.KubeVersion, f func(containerv1.KubeVersion) bool) []containerv1.KubeVersion {
    44  	vsf := make([]containerv1.KubeVersion, 0)
    45  	for _, v := range vs {
    46  		if f(v) {
    47  			vsf = append(vsf, v)
    48  		}
    49  	}
    50  	return vsf
    51  }
    52  
    53  func isUnsupportedKubeVersion(version containerv1.KubeVersion) bool {
    54  	return version.Minor < unsupportedMinorKubeVersion
    55  }
    56  
    57  func GetKubeVersions(versions containerv1.KubeVersions) ([]string, string, error) {
    58  	target := containerv1.ClusterTargetHeader{}
    59  	versionarr, err := versions.List(target)
    60  	var def string
    61  
    62  	if err != nil {
    63  		return nil, "", err
    64  	}
    65  
    66  	// filter unsupported kube versions
    67  	filteredVersionarr := Filter(versionarr, isUnsupportedKubeVersion)
    68  	strversions := make([]string, len(filteredVersionarr))
    69  
    70  	for i, version := range filteredVersionarr {
    71  		strversions[i] = strconv.Itoa(version.Major) + "." + strconv.Itoa(version.Minor) + "." + strconv.Itoa(version.Patch)
    72  		if version.Default {
    73  			def = strversions[i]
    74  		}
    75  	}
    76  	return strversions, def, nil
    77  }
    78  
    79  func GetMachineTypes(zone Zone, region Region, machinetypes MachineTypes) ([]string, error) {
    80  	machinetypesarr, err := machinetypes.GetMachineTypes(zone, region)
    81  
    82  	if err != nil {
    83  		return nil, err
    84  	}
    85  	strmachinetype := make([]string, len(machinetypesarr))
    86  
    87  	for i, machinetype := range machinetypesarr {
    88  		strmachinetype[i] = machinetype.Name
    89  	}
    90  
    91  	return strmachinetype, nil
    92  }
    93  
    94  func GetPrivateVLANs(zone Zone, region Region, vlans VLANs) ([]string, error) {
    95  	vlansarr, err := vlans.GetVLANs(zone, region)
    96  
    97  	if err != nil {
    98  		return nil, err
    99  	}
   100  	strvlans := make([]string, len(vlansarr))
   101  
   102  	var i = 0
   103  	for _, vlan := range vlansarr {
   104  		if strings.Compare(vlan.Type, "private") == 0 {
   105  			strvlans[i] = vlan.ID
   106  			i++
   107  		}
   108  	}
   109  
   110  	return strvlans[0:i], nil
   111  }
   112  
   113  func GetPublicVLANs(zone Zone, region Region, vlans VLANs) ([]string, error) {
   114  	vlansarr, err := vlans.GetVLANs(zone, region)
   115  
   116  	if err != nil {
   117  		return nil, err
   118  	}
   119  	strvlans := make([]string, len(vlansarr))
   120  
   121  	var i = 0
   122  	for _, vlan := range vlansarr {
   123  		if strings.Compare(vlan.Type, "public") == 0 {
   124  			strvlans[i] = vlan.ID
   125  			i++
   126  		}
   127  	}
   128  
   129  	return strvlans[0:i], nil
   130  }