Skip to content

Commit 690aa71

Browse files
authored
Merge pull request #428 from vmware/fix-deployment-resources
Fix retrieving deployment resources
2 parents 3b5ae8a + 619f8f8 commit 690aa71

File tree

3 files changed

+72
-55
lines changed

3 files changed

+72
-55
lines changed

vra/data_source_deployment.go

Lines changed: 53 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@ import (
66
"github.com/go-openapi/strfmt"
77
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
88
"github.com/vmware/vra-sdk-go/pkg/client/deployments"
9-
"github.com/vmware/vra-sdk-go/pkg/models"
109

1110
"log"
1211
)
@@ -138,50 +137,6 @@ func dataSourceDeploymentRead(d *schema.ResourceData, m interface{}) error {
138137
return fmt.Errorf("one of id or name must be assigned")
139138
}
140139

141-
expandLastRequest := d.Get("expand_last_request").(bool)
142-
expandProject := d.Get("expand_project").(bool)
143-
expandResources := d.Get("expand_resources").(bool)
144-
145-
setFields := func(deployment *models.Deployment) error {
146-
d.SetId(deployment.ID.String())
147-
d.Set("blueprint_id", deployment.BlueprintID)
148-
d.Set("blueprint_version", deployment.BlueprintVersion)
149-
d.Set("catalog_item_id", deployment.CatalogItemID)
150-
d.Set("catalog_item_version", deployment.CatalogItemVersion)
151-
d.Set("created_at", deployment.CreatedAt)
152-
d.Set("created_by", deployment.CreatedBy)
153-
d.Set("description", deployment.Description)
154-
d.Set("last_updated_at", deployment.LastUpdatedAt)
155-
d.Set("last_updated_by", deployment.LastUpdatedBy)
156-
d.Set("lease_expire_at", deployment.LeaseExpireAt)
157-
d.Set("name", deployment.Name)
158-
d.Set("org_id", deployment.OrgID)
159-
d.Set("owner", deployment.OwnedBy)
160-
d.Set("project_id", deployment.ProjectID)
161-
d.Set("status", deployment.Status)
162-
163-
if err := d.Set("expense", flattenExpense(deployment.Expense)); err != nil {
164-
return fmt.Errorf("error setting deployment expense - error: %#v", err)
165-
}
166-
167-
if err := d.Set("inputs", expandInputs(deployment.Inputs)); err != nil {
168-
return fmt.Errorf("error setting deployment inputs - error: %#v", err)
169-
}
170-
171-
if err := d.Set("last_request", flattenDeploymentRequest(deployment.LastRequest)); err != nil {
172-
return fmt.Errorf("error setting deployment last_request - error: %#v", err)
173-
}
174-
175-
if err := d.Set("project", flattenResourceReference(deployment.Project)); err != nil {
176-
return fmt.Errorf("error setting project in deployment - error: %#v", err)
177-
}
178-
179-
if err := d.Set("resources", flattenResources(deployment.Resources)); err != nil {
180-
return fmt.Errorf("error setting resources in deployment - error: %#v", err)
181-
}
182-
return nil
183-
}
184-
185140
if nameOk {
186141
getAllResp, err := apiClient.Deployments.GetDeploymentsV3UsingGET(
187142
deployments.NewGetDeploymentsV3UsingGETParams().WithName(withString(name.(string))))
@@ -200,12 +155,15 @@ func dataSourceDeploymentRead(d *schema.ResourceData, m interface{}) error {
200155

201156
// Get the deployment details with all the user provided flags
202157
expand := []string{}
158+
expandProject := d.Get("expand_project").(bool)
203159
if expandProject {
204160
expand = append(expand, "project")
205161
}
162+
expandResources := d.Get("expand_resources").(bool)
206163
if expandResources {
207164
expand = append(expand, "resources")
208165
}
166+
expandLastRequest := d.Get("expand_last_request").(bool)
209167
if expandLastRequest {
210168
expand = append(expand, "lastRequest")
211169
}
@@ -222,5 +180,54 @@ func dataSourceDeploymentRead(d *schema.ResourceData, m interface{}) error {
222180
}
223181

224182
deployment := getResp.Payload
225-
return setFields(deployment)
183+
d.SetId(deployment.ID.String())
184+
d.Set("blueprint_id", deployment.BlueprintID)
185+
d.Set("blueprint_version", deployment.BlueprintVersion)
186+
d.Set("catalog_item_id", deployment.CatalogItemID)
187+
d.Set("catalog_item_version", deployment.CatalogItemVersion)
188+
d.Set("created_at", deployment.CreatedAt)
189+
d.Set("created_by", deployment.CreatedBy)
190+
d.Set("description", deployment.Description)
191+
d.Set("last_updated_at", deployment.LastUpdatedAt)
192+
d.Set("last_updated_by", deployment.LastUpdatedBy)
193+
d.Set("lease_expire_at", deployment.LeaseExpireAt)
194+
d.Set("name", deployment.Name)
195+
d.Set("org_id", deployment.OrgID)
196+
d.Set("owner", deployment.OwnedBy)
197+
d.Set("project_id", deployment.ProjectID)
198+
d.Set("status", deployment.Status)
199+
200+
if err := d.Set("expense", flattenExpense(deployment.Expense)); err != nil {
201+
return fmt.Errorf("error setting deployment expense - error: %#v", err)
202+
}
203+
204+
if err := d.Set("inputs", expandInputs(deployment.Inputs)); err != nil {
205+
return fmt.Errorf("error setting deployment inputs - error: %#v", err)
206+
}
207+
208+
if err := d.Set("last_request", flattenDeploymentRequest(deployment.LastRequest)); err != nil {
209+
return fmt.Errorf("error setting deployment last_request - error: %#v", err)
210+
}
211+
212+
if err := d.Set("project", flattenResourceReference(deployment.Project)); err != nil {
213+
return fmt.Errorf("error setting project in deployment - error: %#v", err)
214+
}
215+
216+
if expandResources {
217+
getResourcesResp, err := apiClient.Deployments.GetDeploymentResourcesUsingGET2(
218+
deployments.NewGetDeploymentResourcesUsingGET2Params().
219+
WithDeploymentID(strfmt.UUID(id.(string))).
220+
WithExpand([]string{"currentRequest"}).
221+
WithAPIVersion(withString(DeploymentsAPIVersion)).
222+
WithTimeout(IncreasedTimeOut))
223+
if err != nil {
224+
return fmt.Errorf("error retrieving deployment resources - error: %#v", err)
225+
}
226+
227+
if err := d.Set("resources", flattenResources(getResourcesResp.GetPayload())); err != nil {
228+
return fmt.Errorf("error setting resources in deployment - error: %#v", err)
229+
}
230+
}
231+
232+
return nil
226233
}

vra/resource.go

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -60,14 +60,14 @@ func resourcesSchema() *schema.Schema {
6060
}
6161
}
6262

63-
func flattenResources(resources []*models.DeploymentResource) []map[string]interface{} {
64-
if len(resources) == 0 {
65-
return make([]map[string]interface{}, 0)
66-
}
63+
func flattenResources(deploymentResources *models.PageOfDeploymentResource) []map[string]interface{} {
64+
resources := make([]map[string]interface{}, 0)
6765

68-
configResources := make([]map[string]interface{}, 0, len(resources))
66+
if deploymentResources == nil {
67+
return resources
68+
}
6969

70-
for _, value := range resources {
70+
for _, value := range deploymentResources.Content {
7171
helper := make(map[string]interface{})
7272

7373
helper["created_at"] = value.CreatedAt.String()
@@ -83,10 +83,10 @@ func flattenResources(resources []*models.DeploymentResource) []map[string]inter
8383
propertiesSlice, _ := json.Marshal(value.Properties)
8484
helper["properties_json"] = string(propertiesSlice)
8585

86-
configResources = append(configResources, helper)
86+
resources = append(resources, helper)
8787
}
8888

89-
return configResources
89+
return resources
9090
}
9191

9292
//func expandResources(configResources []interface{}) []*models.Resource {

vra/resource_deployment.go

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -407,7 +407,17 @@ func resourceDeploymentRead(ctx context.Context, d *schema.ResourceData, m inter
407407

408408
d.Set("project_id", deployment.ProjectID)
409409

410-
if err := d.Set("resources", flattenResources(deployment.Resources)); err != nil {
410+
getResourcesResp, err := apiClient.Deployments.GetDeploymentResourcesUsingGET2(
411+
deployments.NewGetDeploymentResourcesUsingGET2Params().
412+
WithDeploymentID(strfmt.UUID(id)).
413+
WithExpand([]string{"currentRequest"}).
414+
WithAPIVersion(withString(DeploymentsAPIVersion)).
415+
WithTimeout(IncreasedTimeOut))
416+
if err != nil {
417+
return diag.Errorf("error retrieving deployment resources - error: %#v", err)
418+
}
419+
420+
if err := d.Set("resources", flattenResources(getResourcesResp.GetPayload())); err != nil {
411421
return diag.Errorf("error setting resources in deployment - error: %#v", err)
412422
}
413423

0 commit comments

Comments
 (0)