Skip to content

Commit

Permalink
Added support for storage class in volumes
Browse files Browse the repository at this point in the history
  • Loading branch information
jdewald committed Nov 13, 2023
1 parent 6e6b70a commit b6ed222
Show file tree
Hide file tree
Showing 4 changed files with 71 additions and 3 deletions.
5 changes: 5 additions & 0 deletions stackpath/resource_stackpath_compute_workload.go
Original file line number Diff line number Diff line change
Expand Up @@ -179,6 +179,11 @@ func resourceComputeWorkload() *schema.Resource {
Type: schema.TypeString,
Optional: true,
},
"storage_class": {
Type: schema.TypeString,
Optional: true,
Default: "stackpath-edge/network-standard",
},
"resources": resourceComputeWorkloadResourcesSchema(),
},
},
Expand Down
2 changes: 2 additions & 0 deletions stackpath/resource_stackpath_compute_workload_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -1533,6 +1533,8 @@ resource "stackpath_compute_workload" "foo-volume" {
volume_claim {
name = "volume"
slug = "volume"
# this is same as the default
# storage_class = "stackpath-edge/network-standard"
resources {
requests = {
"storage" = "10Gi"
Expand Down
8 changes: 5 additions & 3 deletions stackpath/structure_compute_workload.go
Original file line number Diff line number Diff line change
Expand Up @@ -60,7 +60,8 @@ func convertComputeWorkloadVolumeClaims(prefix string, data *schema.ResourceData
Name: volumeData["name"].(string),
Slug: volumeData["slug"].(string),
Spec: &workload_models.V1VolumeClaimSpec{
Resources: convertComputeWorkloadResourceRequirements(fmt.Sprintf("%s.%d.resources", prefix, i), data),
StorageClass: volumeData["storage_class"].(string),
Resources: convertComputeWorkloadResourceRequirements(fmt.Sprintf("%s.%d.resources", prefix, i), data),
},
})
}
Expand Down Expand Up @@ -572,8 +573,9 @@ func flattenComputeWorkloadVolumeClaims(claims []*workload_models.V1VolumeClaim)
flattened := make([]interface{}, len(claims))
for i, claim := range claims {
flattened[i] = map[string]interface{}{
"name": claim.Name,
"slug": claim.Slug,
"name": claim.Name,
"slug": claim.Slug,
"storage_class": claim.Spec.StorageClass,
"resources": []interface{}{
map[string]interface{}{
"requests": map[string]interface{}{
Expand Down
59 changes: 59 additions & 0 deletions stackpath/structure_compute_workload_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -126,3 +126,62 @@ func TestStackpathConvertContainerRuntime_DNS(t *testing.T) {
assert.Equal(t, "timeout", converted.DNSConfig.Options[0].Name)

}

func TestStackpathComputeVolumeClaims_Standard(t *testing.T) {

r := resourceComputeWorkload()

s := r.Schema

testData := schema.TestResourceDataRaw(t, s, nil)

testData.Set("volume_claim", []interface{}{
map[string]interface{}{
"name": "Some Volume",
"slug": "some-volume",
"resources": []interface{}{
map[string]interface{}{
"requests": map[string]interface{}{
"storage": "10Gi",
},
},
},
},
})

vmSpecs := convertComputeWorkloadVolumeClaims("volume_claim", testData)
assert.NotNil(t, vmSpecs)
assert.Len(t, vmSpecs, 1)

assert.Equal(t, "", vmSpecs[0].Spec.StorageClass)
}

func TestStackpathComputeVolumeClaims_NonStandard(t *testing.T) {

r := resourceComputeWorkload()

s := r.Schema

testData := schema.TestResourceDataRaw(t, s, nil)

testData.Set("volume_claim", []interface{}{
map[string]interface{}{
"name": "Some Volume",
"slug": "some-volume",
"storage_class": "stackpath-edge/direct-standard",
"resources": []interface{}{
map[string]interface{}{
"requests": map[string]interface{}{
"storage": "10Gi",
},
},
},
},
})

vmSpecs := convertComputeWorkloadVolumeClaims("volume_claim", testData)
assert.NotNil(t, vmSpecs)
assert.Len(t, vmSpecs, 1)

assert.Equal(t, "stackpath-edge/direct-standard", vmSpecs[0].Spec.StorageClass)
}

0 comments on commit b6ed222

Please sign in to comment.