mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-07-30 23:15:14 +00:00
Added func ZonesToSet
An admin shall be able to configure a comma separated list of zones for a StorageClass. That's why the func ZonesToSet (string) (set.String, error) is added. The func ZonesToSet converts a string containing a comma separated list of zones to a set. In case the list contains an empty zone an error is returned.
This commit is contained in:
parent
c1c7365e7c
commit
0f3a9cfc5f
@ -410,3 +410,17 @@ func JoinMountOptions(userOptions []string, systemOptions []string) []string {
|
||||
}
|
||||
return allMountOptions.UnsortedList()
|
||||
}
|
||||
|
||||
// ZonesToSet converts a string containing a comma separated list of zones to set
|
||||
func ZonesToSet(zonesString string) (sets.String, error) {
|
||||
zonesSlice := strings.Split(zonesString, ",")
|
||||
zonesSet := make(sets.String)
|
||||
for _, zone := range zonesSlice {
|
||||
trimmedZone := strings.TrimSpace(zone)
|
||||
if trimmedZone == "" {
|
||||
return make(sets.String), fmt.Errorf("comma separated list of zones (%q) must not contain an empty zone", zonesString)
|
||||
}
|
||||
zonesSet.Insert(trimmedZone)
|
||||
}
|
||||
return zonesSet, nil
|
||||
}
|
||||
|
@ -523,3 +523,37 @@ func TestChooseZoneForVolume(t *testing.T) {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func TestZonesToSet(t *testing.T) {
|
||||
functionUnderTest := "ZonesToSet"
|
||||
// First part: want an error
|
||||
sliceOfZones := []string{"", ",", "us-east-1a, , us-east-1d", ", us-west-1b", "us-west-2b,"}
|
||||
for _, zones := range sliceOfZones {
|
||||
if got, err := ZonesToSet(zones); err == nil {
|
||||
t.Errorf("%v(%v) returned (%v), want (%v)", functionUnderTest, zones, got, "an error")
|
||||
}
|
||||
}
|
||||
|
||||
// Second part: want no error
|
||||
tests := []struct {
|
||||
zones string
|
||||
want sets.String
|
||||
}{
|
||||
{
|
||||
zones: "us-east-1a",
|
||||
want: sets.String{"us-east-1a": sets.Empty{}},
|
||||
},
|
||||
{
|
||||
zones: "us-east-1a, us-west-2a",
|
||||
want: sets.String{
|
||||
"us-east-1a": sets.Empty{},
|
||||
"us-west-2a": sets.Empty{},
|
||||
},
|
||||
},
|
||||
}
|
||||
for _, tt := range tests {
|
||||
if got, err := ZonesToSet(tt.zones); err != nil || !got.Equal(tt.want) {
|
||||
t.Errorf("%v(%v) returned (%v), want (%v)", functionUnderTest, tt.zones, got, tt.want)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user