Skip to content

Commit

Permalink
v1.0.4-wem-preview-2
Browse files Browse the repository at this point in the history
  • Loading branch information
yashbhokare-citrix committed Oct 7, 2024
1 parent 1e66466 commit d45a2ca
Show file tree
Hide file tree
Showing 6 changed files with 116 additions and 12 deletions.
89 changes: 89 additions & 0 deletions internal/test/wem_directory_object_resource_test.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,89 @@
// Copyright © 2024. Citrix Systems, Inc.

package test

import (
"fmt"
"os"
"testing"

"github.com/hashicorp/terraform-plugin-testing/helper/resource"
)

func TestDirectoryObject(t *testing.T) {
zoneInput := os.Getenv("TEST_ZONE_INPUT_AZURE")

resource.Test(t, resource.TestCase{
ProtoV6ProviderFactories: testAccProtoV6ProviderFactories,
PreCheck: func() {
TestProviderPreCheck(t)
TestHypervisorPreCheck_Azure(t)
TestHypervisorResourcePoolPreCheck_Azure(t)
TestMachineCatalogPreCheck_Azure(t)
TestWemSiteResourcePreCheck(t)
},
Steps: []resource.TestStep{
// Create and read test
{
Config: composeTestResourceTf(
BuildDirectoryObjectResource(t, wem_directory_object_test_resource),
BuildWemSiteResource(t),
BuildMachineCatalogResourceWorkgroup(t, machinecatalog_testResources_workgroup),
BuildHypervisorResourcePoolResourceAzure(t, hypervisor_resource_pool_testResource_azure),
BuildHypervisorResourceAzure(t, hypervisor_testResources),
BuildZoneResource(t, zoneInput, false),
),
Check: resource.ComposeAggregateTestCheckFunc(
// Verify if the directory object is created and enabled
resource.TestCheckResourceAttr("citrix_wem_directory_object.test_wem_directory", "enabled", "true"),
),
},
// Import test
{
ResourceName: "citrix_wem_directory_object.test_wem_directory",
ImportState: true,
ImportStateVerify: true,
ImportStateVerifyIgnore: []string{},
},
// Update and Read test
{
Config: composeTestResourceTf(
BuildDirectoryObjectResource(t, wem_directory_object_test_resource_updated),
BuildWemSiteResource(t),
BuildMachineCatalogResourceWorkgroup(t, machinecatalog_testResources_workgroup),
BuildHypervisorResourcePoolResourceAzure(t, hypervisor_resource_pool_testResource_azure),
BuildHypervisorResourceAzure(t, hypervisor_testResources),
BuildZoneResource(t, zoneInput, false),
),
Check: resource.ComposeAggregateTestCheckFunc(
// Verify if the directory object is disabled
resource.TestCheckResourceAttr("citrix_wem_directory_object.test_wem_directory", "enabled", "false"),
),
},
},
})
}

func BuildDirectoryObjectResource(t *testing.T, directoryResource string) string {
return fmt.Sprintf(directoryResource)
}

var (
wem_directory_object_test_resource = `
resource "citrix_wem_directory_object" "test_wem_directory" {
configuration_set_id = citrix_wem_configuration_set.test_wem_site.id
machine_catalog_id = citrix_machine_catalog.testMachineCatalog-WG.id
enabled = true
}
`
)

var (
wem_directory_object_test_resource_updated = `
resource "citrix_wem_directory_object" "test_wem_directory" {
configuration_set_id = citrix_wem_configuration_set.test_wem_site.id
machine_catalog_id = citrix_machine_catalog.testMachineCatalog-WG.id
enabled = false
}
`
)
2 changes: 1 addition & 1 deletion internal/util/resource.go
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,7 @@ func GetHypervisorResourcePool(ctx context.Context, client *citrixdaasclient.Cit
}

func GetMachineCatalog(ctx context.Context, client *citrixdaasclient.CitrixDaasClient, diagnostics *diag.Diagnostics, machineCatalogId string, addErrorToDiagnostics bool) (*citrixorchestration.MachineCatalogDetailResponseModel, error) {
getMachineCatalogRequest := client.ApiClient.MachineCatalogsAPIsDAAS.MachineCatalogsGetMachineCatalog(ctx, machineCatalogId).Fields("Id,Name,Description,ProvisioningType,Zone,AllocationType,SessionSupport,TotalCount,HypervisorConnection,ProvisioningScheme,RemotePCEnrollmentScopes,IsPowerManaged,MinimumFunctionalLevel,IsRemotePC,Metadata,Scopes,AdminScope")
getMachineCatalogRequest := client.ApiClient.MachineCatalogsAPIsDAAS.MachineCatalogsGetMachineCatalog(ctx, machineCatalogId).Fields("Id,Name,Description,ProvisioningType,Zone,AllocationType,SessionSupport,TotalCount,HypervisorConnection,ProvisioningScheme,RemotePCEnrollmentScopes,IsPowerManaged,MinimumFunctionalLevel,IsRemotePC,Metadata,Scopes,AdminFolder")
catalog, httpResp, err := citrixdaasclient.ExecuteWithRetry[*citrixorchestration.MachineCatalogDetailResponseModel](getMachineCatalogRequest, client)
if err != nil && addErrorToDiagnostics {
diagnostics.AddError(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -169,7 +169,7 @@ func (w *wemDirectoryResource) Read(ctx context.Context, req resource.ReadReques
}

// Get WEM Directory object by ID
machineADObject, err := getMachineADObjectById(ctx, w.client, state.Id.ValueString())
machineADObject, err := readDirectoryObject(ctx, w.client, resp, state.Id.ValueString())
if err != nil {
return
}
Expand Down
16 changes: 12 additions & 4 deletions internal/wem/wem_machine_ad_object/wem_directory_object_utils.go
Original file line number Diff line number Diff line change
Expand Up @@ -11,11 +11,20 @@ import (
"github.com/hashicorp/terraform-plugin-framework/resource"
)

func readDirectoryObject(ctx context.Context, client *citrixdaasclient.CitrixDaasClient, resp *resource.ReadResponse, machineADObjectId string) (*citrixwemservice.MachineModel, error) {
idInt64, err := strconv.ParseInt(machineADObjectId, 10, 64)
if err != nil {
return nil, fmt.Errorf("invalid WEM Directory object ID: %v", err)
}
machineADObjectQueryRequest := client.WemClient.MachineADObjectDAAS.AdObjectQueryById(ctx, idInt64)
machineADObjectQueryResponse, _, err := util.ReadResource[*citrixwemservice.MachineModel](machineADObjectQueryRequest, ctx, client, resp, "Catalog Directory Object", machineADObjectId)
return machineADObjectQueryResponse, err
}

func getMachineADObjectBySid(ctx context.Context, client *citrixdaasclient.CitrixDaasClient, machineCatalogId string) (citrixwemservice.MachineModel, error) {
var resp *resource.ReadResponse
machineADObjectQueryRequest := client.WemClient.MachineADObjectDAAS.AdObjectQuery(ctx)
machineADObjectQueryRequest = machineADObjectQueryRequest.Sid(machineCatalogId)
machineADObjectQueryResponse, httpResp, err := util.ReadResource[*citrixwemservice.AdObjectQuery200Response](machineADObjectQueryRequest, ctx, client, resp, "Sid", machineCatalogId)
machineADObjectQueryResponse, httpResp, err := citrixdaasclient.ExecuteWithRetry[*citrixwemservice.AdObjectQuery200Response](machineADObjectQueryRequest, client)

var machineADObject citrixwemservice.MachineModel
machineADObjectList := machineADObjectQueryResponse.GetItems()
Expand All @@ -36,13 +45,12 @@ func getMachineADObjectBySid(ctx context.Context, client *citrixdaasclient.Citri
}

func getMachineADObjectById(ctx context.Context, client *citrixdaasclient.CitrixDaasClient, machineADObjectId string) (*citrixwemservice.MachineModel, error) {
var resp *resource.ReadResponse
idInt64, err := strconv.ParseInt(machineADObjectId, 10, 64)
if err != nil {
return nil, fmt.Errorf("invalid WEM Directory object ID: %v", err)
}
machineADObjectQueryRequest := client.WemClient.MachineADObjectDAAS.AdObjectQueryById(ctx, idInt64)
machineADObjectQueryResponse, httpResp, err := util.ReadResource[*citrixwemservice.MachineModel](machineADObjectQueryRequest, ctx, client, resp, "Id", machineADObjectId)
machineADObjectQueryResponse, httpResp, err := citrixdaasclient.ExecuteWithRetry[*citrixwemservice.MachineModel](machineADObjectQueryRequest, client)

if err != nil {
err = fmt.Errorf("TransactionId: " + citrixdaasclient.GetTransactionIdFromHttpResponse(httpResp) + "\nError message: " + util.ReadClientError(err))
Expand Down
2 changes: 1 addition & 1 deletion internal/wem/wem_site/wem_site_service_resource.go
Original file line number Diff line number Diff line change
Expand Up @@ -168,7 +168,7 @@ func (w *wemSiteServiceResource) Read(ctx context.Context, req resource.ReadRequ
}

// Get site from remote using site Id
siteConfig, err := getSiteById(ctx, w.client, state)
siteConfig, err := readConfigurationSet(ctx, w.client, resp, state)
if err != nil {
return
}
Expand Down
17 changes: 12 additions & 5 deletions internal/wem/wem_site/wem_site_service_utils.go
Original file line number Diff line number Diff line change
Expand Up @@ -13,12 +13,21 @@ import (
"github.com/hashicorp/terraform-plugin-framework/resource"
)

func readConfigurationSet(ctx context.Context, client *citrixdaasclient.CitrixDaasClient, resp *resource.ReadResponse, wemResource WemSiteResourceModel) (*citrixwemservice.SiteModel, error) {
idInt64, err := strconv.ParseInt(wemResource.Id.ValueString(), 10, 64)
if err != nil {
return nil, fmt.Errorf("invalid id: %v", err)
}
siteGetRequest := client.WemClient.SiteDAAS.SiteQueryById(ctx, idInt64)
siteGetResponse, _, err := util.ReadResource[*citrixwemservice.SiteModel](siteGetRequest, ctx, client, resp, "Configuration Set", wemResource.Name.ValueString())
return siteGetResponse, err
}

func getSiteByName(ctx context.Context, client *citrixdaasclient.CitrixDaasClient, wemResource WemSiteResourceModel) (citrixwemservice.SiteModel, error) {
var resp *resource.ReadResponse
siteName := wemResource.Name.ValueString()
siteGetRequest := client.WemClient.SiteDAAS.SiteQuery(ctx)
siteGetRequest = siteGetRequest.Name(siteName)
siteGetResponse, httpResp, err := util.ReadResource[*citrixwemservice.SiteQuery200Response](siteGetRequest, ctx, client, resp, "Name", siteName)
siteGetResponse, httpResp, err := citrixdaasclient.ExecuteWithRetry[*citrixwemservice.SiteQuery200Response](siteGetRequest, client)

siteConfigList := siteGetResponse.GetItems()
var siteConfig citrixwemservice.SiteModel
Expand All @@ -38,14 +47,12 @@ func getSiteByName(ctx context.Context, client *citrixdaasclient.CitrixDaasClien
}

func getSiteById(ctx context.Context, client *citrixdaasclient.CitrixDaasClient, wemResource WemSiteResourceModel) (*citrixwemservice.SiteModel, error) {
var resp *resource.ReadResponse
siteId := wemResource.Id.ValueString()
idInt64, err := strconv.ParseInt(wemResource.Id.ValueString(), 10, 64)
if err != nil {
return &citrixwemservice.SiteModel{}, fmt.Errorf("invalid id: %v", err)
}
siteGetRequest := client.WemClient.SiteDAAS.SiteQueryById(ctx, idInt64)
siteGetResponse, httpResp, err := util.ReadResource[*citrixwemservice.SiteModel](siteGetRequest, ctx, client, resp, "Id", siteId)
siteGetResponse, httpResp, err := citrixdaasclient.ExecuteWithRetry[*citrixwemservice.SiteModel](siteGetRequest, client)

if err != nil {
err = fmt.Errorf("TransactionId: " + citrixdaasclient.GetTransactionIdFromHttpResponse(httpResp) + "\nError message: " + util.ReadClientError(err))
Expand Down

0 comments on commit d45a2ca

Please sign in to comment.