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 }