From 03bbb5a959815963e13795a368a112757c3b921d Mon Sep 17 00:00:00 2001 From: Mani-Raj-Langaru1 Date: Fri, 26 Sep 2025 10:37:43 -0400 Subject: [PATCH 01/13] DR Automation Apis --- ibm/conns/config.go | 11 + ibm/provider/provider.go | 21 + ibm/service/drautomationservice/README.md | 11 + ...ta_source_ibm_pdr_get_deployment_status.go | 197 ++++++++ ...urce_ibm_pdr_get_deployment_status_test.go | 54 +++ .../data_source_ibm_pdr_get_dr_locations.go | 123 +++++ ...ta_source_ibm_pdr_get_dr_locations_test.go | 64 +++ ..._source_ibm_pdr_get_dr_summary_response.go | 337 ++++++++++++++ ...ce_ibm_pdr_get_dr_summary_response_test.go | 140 ++++++ .../data_source_ibm_pdr_get_event.go | 237 ++++++++++ .../data_source_ibm_pdr_get_event_test.go | 73 +++ .../data_source_ibm_pdr_get_events.go | 254 +++++++++++ .../data_source_ibm_pdr_get_events_test.go | 116 +++++ .../data_source_ibm_pdr_get_machine_types.go | 110 +++++ ...a_source_ibm_pdr_get_machine_types_test.go | 44 ++ ...data_source_ibm_pdr_get_managed_vm_list.go | 123 +++++ ...source_ibm_pdr_get_managed_vm_list_test.go | 64 +++ .../data_source_ibm_pdr_last_operation.go | 228 ++++++++++ ...data_source_ibm_pdr_last_operation_test.go | 56 +++ ...ata_source_ibm_pdr_schematic_workspaces.go | 192 ++++++++ ...ource_ibm_pdr_schematic_workspaces_test.go | 101 +++++ ...ata_source_ibm_pdr_validate_clustertype.go | 110 +++++ ...ource_ibm_pdr_validate_clustertype_test.go | 43 ++ .../data_source_ibm_pdr_validate_proxyip.go | 125 +++++ ...ta_source_ibm_pdr_validate_proxyip_test.go | 47 ++ .../data_source_ibm_pdr_validate_workspace.go | 114 +++++ ..._source_ibm_pdr_validate_workspace_test.go | 47 ++ ...ata_source_ibm_pdr_workspace_custom_vpc.go | 325 +++++++++++++ ...ource_ibm_pdr_workspace_custom_vpc_test.go | 171 +++++++ ...data_source_ibm_pdr_workspace_schematic.go | 319 +++++++++++++ ...source_ibm_pdr_workspace_schematic_test.go | 169 +++++++ .../resource_ibm_pdr_managedr.go | 426 ++++++++++++++++++ .../resource_ibm_pdr_managedr_test.go | 191 ++++++++ .../resource_ibm_pdr_validate_apikey.go | 213 +++++++++ .../resource_ibm_pdr_validate_apikey_test.go | 161 +++++++ 35 files changed, 5017 insertions(+) create mode 100755 ibm/service/drautomationservice/README.md create mode 100644 ibm/service/drautomationservice/data_source_ibm_pdr_get_deployment_status.go create mode 100644 ibm/service/drautomationservice/data_source_ibm_pdr_get_deployment_status_test.go create mode 100644 ibm/service/drautomationservice/data_source_ibm_pdr_get_dr_locations.go create mode 100644 ibm/service/drautomationservice/data_source_ibm_pdr_get_dr_locations_test.go create mode 100644 ibm/service/drautomationservice/data_source_ibm_pdr_get_dr_summary_response.go create mode 100644 ibm/service/drautomationservice/data_source_ibm_pdr_get_dr_summary_response_test.go create mode 100644 ibm/service/drautomationservice/data_source_ibm_pdr_get_event.go create mode 100644 ibm/service/drautomationservice/data_source_ibm_pdr_get_event_test.go create mode 100644 ibm/service/drautomationservice/data_source_ibm_pdr_get_events.go create mode 100644 ibm/service/drautomationservice/data_source_ibm_pdr_get_events_test.go create mode 100644 ibm/service/drautomationservice/data_source_ibm_pdr_get_machine_types.go create mode 100644 ibm/service/drautomationservice/data_source_ibm_pdr_get_machine_types_test.go create mode 100644 ibm/service/drautomationservice/data_source_ibm_pdr_get_managed_vm_list.go create mode 100644 ibm/service/drautomationservice/data_source_ibm_pdr_get_managed_vm_list_test.go create mode 100644 ibm/service/drautomationservice/data_source_ibm_pdr_last_operation.go create mode 100644 ibm/service/drautomationservice/data_source_ibm_pdr_last_operation_test.go create mode 100644 ibm/service/drautomationservice/data_source_ibm_pdr_schematic_workspaces.go create mode 100644 ibm/service/drautomationservice/data_source_ibm_pdr_schematic_workspaces_test.go create mode 100644 ibm/service/drautomationservice/data_source_ibm_pdr_validate_clustertype.go create mode 100644 ibm/service/drautomationservice/data_source_ibm_pdr_validate_clustertype_test.go create mode 100644 ibm/service/drautomationservice/data_source_ibm_pdr_validate_proxyip.go create mode 100644 ibm/service/drautomationservice/data_source_ibm_pdr_validate_proxyip_test.go create mode 100644 ibm/service/drautomationservice/data_source_ibm_pdr_validate_workspace.go create mode 100644 ibm/service/drautomationservice/data_source_ibm_pdr_validate_workspace_test.go create mode 100644 ibm/service/drautomationservice/data_source_ibm_pdr_workspace_custom_vpc.go create mode 100644 ibm/service/drautomationservice/data_source_ibm_pdr_workspace_custom_vpc_test.go create mode 100644 ibm/service/drautomationservice/data_source_ibm_pdr_workspace_schematic.go create mode 100644 ibm/service/drautomationservice/data_source_ibm_pdr_workspace_schematic_test.go create mode 100644 ibm/service/drautomationservice/resource_ibm_pdr_managedr.go create mode 100644 ibm/service/drautomationservice/resource_ibm_pdr_managedr_test.go create mode 100644 ibm/service/drautomationservice/resource_ibm_pdr_validate_apikey.go create mode 100644 ibm/service/drautomationservice/resource_ibm_pdr_validate_apikey_test.go diff --git a/ibm/conns/config.go b/ibm/conns/config.go index bec357e470..7fa2eba601 100644 --- a/ibm/conns/config.go +++ b/ibm/conns/config.go @@ -135,6 +135,7 @@ import ( "github.com/IBM/platform-services-go-sdk/partnercentersellv1" scc "github.com/IBM/scc-go-sdk/v5/securityandcompliancecenterapiv3" "github.com/IBM/secrets-manager-go-sdk/v2/secretsmanagerv2" + "github.ibm.com/DRAutomation/dra-go-sdk/drautomationservicev1" ) // RetryAPIDelay - retry api delay @@ -327,6 +328,7 @@ type ClientSession interface { VmwareV1() (*vmwarev1.VmwareV1, error) LogsV0() (*logsv0.LogsV0, error) SdsaasV1() (*sdsaasv1.SdsaasV1, error) + DrAutomationServiceV1() (*drautomationservicev1.DrAutomationServiceV1, error) } type clientSession struct { @@ -701,6 +703,10 @@ type clientSession struct { // Global Catalog Management Option globalCatalogClient *globalcatalogv1.GlobalCatalogV1 globalCatalogClientErr error + + // DR Automation + drAutomationServiceClient *drautomationservicev1.DrAutomationServiceV1 + drAutomationServiceClientErr error } // Usage Reports @@ -1044,6 +1050,11 @@ func (sess clientSession) CisSSLClientSession() (*cissslv1.SslCertificateApiV1, return sess.cisSSLClient.Clone(), nil } +// DrAutomation Service +func (session clientSession) DrAutomationServiceV1() (*drautomationservicev1.DrAutomationServiceV1, error) { + return session.drAutomationServiceClient, session.drAutomationServiceClientErr +} + // CIS WAF Packages func (sess clientSession) CisWAFPackageClientSession() (*ciswafpackagev1.WafRulePackagesApiV1, error) { if sess.cisWAFPackageErr != nil { diff --git a/ibm/provider/provider.go b/ibm/provider/provider.go index 7f5e66f36e..3a67cef93c 100644 --- a/ibm/provider/provider.go +++ b/ibm/provider/provider.go @@ -37,6 +37,7 @@ import ( "github.com/IBM-Cloud/terraform-provider-ibm/ibm/service/db2" "github.com/IBM-Cloud/terraform-provider-ibm/ibm/service/directlink" "github.com/IBM-Cloud/terraform-provider-ibm/ibm/service/dnsservices" + "github.com/IBM-Cloud/terraform-provider-ibm/ibm/service/drautomationservice" "github.com/IBM-Cloud/terraform-provider-ibm/ibm/service/enterprise" "github.com/IBM-Cloud/terraform-provider-ibm/ibm/service/eventnotification" "github.com/IBM-Cloud/terraform-provider-ibm/ibm/service/eventstreams" @@ -1098,6 +1099,22 @@ func Provider() *schema.Provider { // Logs Router Service "ibm_logs_router_tenants": logsrouting.DataSourceIBMLogsRouterTenants(), "ibm_logs_router_targets": logsrouting.DataSourceIBMLogsRouterTargets(), + + // DR Automation Service + "ibm_pdr_workspace_schematic": drautomationservice.DataSourceIbmPdrWorkspaceSchematic(), + "ibm_pdr_workspace_custom_vpc": drautomationservice.DataSourceIbmPdrWorkspaceCustomVpc(), + "ibm_pdr_get_deployment_status": drautomationservice.DataSourceIbmPdrGetDeploymentStatus(), + "ibm_pdr_get_dr_summary_response": drautomationservice.DataSourceIbmPdrGetDrSummaryResponse(), + "ibm_pdr_get_event": drautomationservice.DataSourceIbmPdrGetEvent(), + "ibm_pdr_get_events": drautomationservice.DataSourceIbmPdrGetEvents(), + "ibm_pdr_get_dr_locations": drautomationservice.DataSourceIbmPdrGetDrLocations(), + "ibm_pdr_get_machine_types": drautomationservice.DataSourceIbmPdrGetMachineTypes(), + "ibm_pdr_get_managed_vm_list": drautomationservice.DataSourceIbmPdrGetManagedVmList(), + "ibm_pdr_schematic_workspaces": drautomationservice.DataSourceIbmPdrSchematicWorkspaces(), + "ibm_pdr_last_operation": drautomationservice.DataSourceIbmPdrLastOperation(), + "ibm_pdr_validate_clustertype": drautomationservice.DataSourceIbmPdrValidateClustertype(), + "ibm_pdr_validate_proxyip": drautomationservice.DataSourceIbmPdrValidateProxyip(), + "ibm_pdr_validate_workspace": drautomationservice.DataSourceIbmPdrValidateWorkspace(), }, ResourcesMap: map[string]*schema.Resource{ @@ -1767,6 +1784,10 @@ func Provider() *schema.Provider { // Logs Router Service "ibm_logs_router_tenant": logsrouting.ResourceIBMLogsRouterTenant(), + + // DR Automation Service + "ibm_pdr_managedr": drautomationservice.ResourceIbmPdrManagedr(), + "ibm_pdr_validate_apikey": drautomationservice.ResourceIbmPdrValidateApikey(), }, ConfigureFunc: providerConfigure, diff --git a/ibm/service/drautomationservice/README.md b/ibm/service/drautomationservice/README.md new file mode 100755 index 0000000000..043be27aa4 --- /dev/null +++ b/ibm/service/drautomationservice/README.md @@ -0,0 +1,11 @@ +# Terraform IBM Provider + +This area is primarily for IBM provider contributors and maintainers. For information on _using_ Terraform and the IBM provider, see the links below. + + +## Handy Links +* [Find out about contributing](../../../CONTRIBUTING.md) to the IBM provider! +* IBM Provider Docs: [Home](https://registry.terraform.io/providers/IBM-Cloud/ibm/latest/docs) +* IBM Provider Docs: [One of the resources](https://registry.terraform.io/providers/IBM-Cloud/ibm/latest/docs/resources/pdr_managedr) +* IBM API Docs: [IBM API Docs for ]() +* IBM SDK: [IBM SDK for ](https://github.com/IBM/appconfiguration-go-admin-sdk/tree/master/drautomationservicev1) diff --git a/ibm/service/drautomationservice/data_source_ibm_pdr_get_deployment_status.go b/ibm/service/drautomationservice/data_source_ibm_pdr_get_deployment_status.go new file mode 100644 index 0000000000..2e28ab7b90 --- /dev/null +++ b/ibm/service/drautomationservice/data_source_ibm_pdr_get_deployment_status.go @@ -0,0 +1,197 @@ +// Copyright IBM Corp. 2025 All Rights Reserved. +// Licensed under the Mozilla Public License v2.0 + +/* + * IBM OpenAPI Terraform Generator Version: 3.105.0-3c13b041-20250605-193116 + */ + +package drautomationservice + +import ( + "context" + "fmt" + "log" + "time" + + "github.com/hashicorp/terraform-plugin-sdk/v2/diag" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" + + "github.com/IBM-Cloud/terraform-provider-ibm/ibm/conns" + "github.com/IBM-Cloud/terraform-provider-ibm/ibm/flex" + "github.com/IBM/go-sdk-core/v5/core" + "github.ibm.com/DRAutomation/dra-go-sdk/drautomationservicev1" +) + +func DataSourceIbmPdrGetDeploymentStatus() *schema.Resource { + return &schema.Resource{ + ReadContext: dataSourceIbmPdrGetDeploymentStatusRead, + + Schema: map[string]*schema.Schema{ + "instance_id": &schema.Schema{ + Type: schema.TypeString, + Required: true, + Description: "instance id of instance to provision.", + }, + "if_none_match": &schema.Schema{ + Type: schema.TypeString, + Optional: true, + Description: "ETag for conditional requests (optional).", + }, + "orch_ext_connectivity_status": &schema.Schema{ + Type: schema.TypeString, + Computed: true, + Description: "External connectivity status of the orchestrator cluster.", + }, + "orch_standby_node_addition_status": &schema.Schema{ + Type: schema.TypeString, + Computed: true, + Description: "Status of the standby node addition process.", + }, + "orchestrator_cluster_message": &schema.Schema{ + Type: schema.TypeString, + Computed: true, + Description: "Cluster status message.", + }, + "orchestrator_cluster_type": &schema.Schema{ + Type: schema.TypeString, + Computed: true, + Description: "Type of orchestrator cluster.", + }, + "orchestrator_config_status": &schema.Schema{ + Type: schema.TypeString, + Computed: true, + Description: "Configuration status of the orchestrator.", + }, + "orchestrator_group_leader": &schema.Schema{ + Type: schema.TypeString, + Optional: true, + Computed: true, + Description: "Name of the orchestrator acting as the cluster leader.", + }, + "orchestrator_name": &schema.Schema{ + Type: schema.TypeString, + Computed: true, + Description: "Name of the primary orchestrator.", + }, + "orchestrator_status": &schema.Schema{ + Type: schema.TypeString, + Computed: true, + Description: "Status of the primary orchestrator.", + }, + "schematic_workspace_name": &schema.Schema{ + Type: schema.TypeString, + Computed: true, + Description: "Name of the schematic workspace.", + }, + "schematic_workspace_status": &schema.Schema{ + Type: schema.TypeString, + Computed: true, + Description: "Status of the schematic workspace.", + }, + "ssh_key_name": &schema.Schema{ + Type: schema.TypeString, + Computed: true, + Description: "Name of the SSH key associated with the orchestrator.", + }, + "standby_orchestrator_name": &schema.Schema{ + Type: schema.TypeString, + Computed: true, + Description: "Name of the standby orchestrator.", + }, + "standby_orchestrator_status": &schema.Schema{ + Type: schema.TypeString, + Computed: true, + Description: "Status of the standby orchestrator.", + }, + }, + } +} + +func dataSourceIbmPdrGetDeploymentStatusRead(context context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { + drAutomationServiceClient, err := meta.(conns.ClientSession).DrAutomationServiceV1() + if err != nil { + tfErr := flex.DiscriminatedTerraformErrorf(err, err.Error(), "(Data) ibm_pdr_get_deployment_status", "read", "initialize-client") + log.Printf("[DEBUG]\n%s", tfErr.GetDebugMessage()) + return tfErr.GetDiag() + } + + getServiceInstanceDrDeploymentOptions := &drautomationservicev1.GetServiceInstanceDrDeploymentOptions{} + + getServiceInstanceDrDeploymentOptions.SetInstanceID(d.Get("instance_id").(string)) + if _, ok := d.GetOk("if_none_match"); ok { + getServiceInstanceDrDeploymentOptions.SetIfNoneMatch(d.Get("if_none_match").(string)) + } + + deploymentStatus, _, err := drAutomationServiceClient.GetServiceInstanceDrDeploymentWithContext(context, getServiceInstanceDrDeploymentOptions) + if err != nil { + tfErr := flex.TerraformErrorf(err, fmt.Sprintf("GetServiceInstanceDrDeploymentWithContext failed: %s", err.Error()), "(Data) ibm_pdr_get_deployment_status", "read") + log.Printf("[DEBUG]\n%s", tfErr.GetDebugMessage()) + return tfErr.GetDiag() + } + + d.SetId(dataSourceIbmPdrGetDeploymentStatusID(d)) + + if !core.IsNil(deploymentStatus.OrchExtConnectivityStatus) { + if err = d.Set("orch_ext_connectivity_status", deploymentStatus.OrchExtConnectivityStatus); err != nil { + return flex.DiscriminatedTerraformErrorf(err, fmt.Sprintf("Error setting orch_ext_connectivity_status: %s", err), "(Data) ibm_pdr_get_deployment_status", "read", "set-orch_ext_connectivity_status").GetDiag() + } + } + + if err = d.Set("orch_standby_node_addition_status", deploymentStatus.OrchStandbyNodeAdditionStatus); err != nil { + return flex.DiscriminatedTerraformErrorf(err, fmt.Sprintf("Error setting orch_standby_node_addition_status: %s", err), "(Data) ibm_pdr_get_deployment_status", "read", "set-orch_standby_node_addition_status").GetDiag() + } + + if err = d.Set("orchestrator_cluster_message", deploymentStatus.OrchestratorClusterMessage); err != nil { + return flex.DiscriminatedTerraformErrorf(err, fmt.Sprintf("Error setting orchestrator_cluster_message: %s", err), "(Data) ibm_pdr_get_deployment_status", "read", "set-orchestrator_cluster_message").GetDiag() + } + + if err = d.Set("orchestrator_cluster_type", deploymentStatus.OrchestratorClusterType); err != nil { + return flex.DiscriminatedTerraformErrorf(err, fmt.Sprintf("Error setting orchestrator_cluster_type: %s", err), "(Data) ibm_pdr_get_deployment_status", "read", "set-orchestrator_cluster_type").GetDiag() + } + + if err = d.Set("orchestrator_config_status", deploymentStatus.OrchestratorConfigStatus); err != nil { + return flex.DiscriminatedTerraformErrorf(err, fmt.Sprintf("Error setting orchestrator_config_status: %s", err), "(Data) ibm_pdr_get_deployment_status", "read", "set-orchestrator_config_status").GetDiag() + } + if !core.IsNil(deploymentStatus.OrchestratorGroupLeader) { + if err = d.Set("orchestrator_group_leader", deploymentStatus.OrchestratorGroupLeader); err != nil { + return flex.DiscriminatedTerraformErrorf(err, fmt.Sprintf("Error setting orchestrator_group_leader: %s", err), "(Data) ibm_pdr_get_deployment_status", "read", "set-orchestrator_group_leader").GetDiag() + } + } else { + d.Set("orchestrator_group_leader", "") + } + + if err = d.Set("orchestrator_name", deploymentStatus.OrchestratorName); err != nil { + return flex.DiscriminatedTerraformErrorf(err, fmt.Sprintf("Error setting orchestrator_name: %s", err), "(Data) ibm_pdr_get_deployment_status", "read", "set-orchestrator_name").GetDiag() + } + + if err = d.Set("orchestrator_status", deploymentStatus.OrchestratorStatus); err != nil { + return flex.DiscriminatedTerraformErrorf(err, fmt.Sprintf("Error setting orchestrator_status: %s", err), "(Data) ibm_pdr_get_deployment_status", "read", "set-orchestrator_status").GetDiag() + } + + if err = d.Set("schematic_workspace_name", deploymentStatus.SchematicWorkspaceName); err != nil { + return flex.DiscriminatedTerraformErrorf(err, fmt.Sprintf("Error setting schematic_workspace_name: %s", err), "(Data) ibm_pdr_get_deployment_status", "read", "set-schematic_workspace_name").GetDiag() + } + + if err = d.Set("schematic_workspace_status", deploymentStatus.SchematicWorkspaceStatus); err != nil { + return flex.DiscriminatedTerraformErrorf(err, fmt.Sprintf("Error setting schematic_workspace_status: %s", err), "(Data) ibm_pdr_get_deployment_status", "read", "set-schematic_workspace_status").GetDiag() + } + + if err = d.Set("ssh_key_name", deploymentStatus.SshKeyName); err != nil { + return flex.DiscriminatedTerraformErrorf(err, fmt.Sprintf("Error setting ssh_key_name: %s", err), "(Data) ibm_pdr_get_deployment_status", "read", "set-ssh_key_name").GetDiag() + } + + if err = d.Set("standby_orchestrator_name", deploymentStatus.StandbyOrchestratorName); err != nil { + return flex.DiscriminatedTerraformErrorf(err, fmt.Sprintf("Error setting standby_orchestrator_name: %s", err), "(Data) ibm_pdr_get_deployment_status", "read", "set-standby_orchestrator_name").GetDiag() + } + + if err = d.Set("standby_orchestrator_status", deploymentStatus.StandbyOrchestratorStatus); err != nil { + return flex.DiscriminatedTerraformErrorf(err, fmt.Sprintf("Error setting standby_orchestrator_status: %s", err), "(Data) ibm_pdr_get_deployment_status", "read", "set-standby_orchestrator_status").GetDiag() + } + + return nil +} + +// dataSourceIbmPdrGetDeploymentStatusID returns a reasonable ID for the list. +func dataSourceIbmPdrGetDeploymentStatusID(d *schema.ResourceData) string { + return time.Now().UTC().String() +} diff --git a/ibm/service/drautomationservice/data_source_ibm_pdr_get_deployment_status_test.go b/ibm/service/drautomationservice/data_source_ibm_pdr_get_deployment_status_test.go new file mode 100644 index 0000000000..50a3455ec1 --- /dev/null +++ b/ibm/service/drautomationservice/data_source_ibm_pdr_get_deployment_status_test.go @@ -0,0 +1,54 @@ +// Copyright IBM Corp. 2025 All Rights Reserved. +// Licensed under the Mozilla Public License v2.0 + +/* + * IBM OpenAPI Terraform Generator Version: 3.105.0-3c13b041-20250605-193116 +*/ + +package drautomationservice_test + +import ( + "fmt" + "testing" + + "github.com/hashicorp/terraform-plugin-testing/helper/resource" + + acc "github.com/IBM-Cloud/terraform-provider-ibm/ibm/acctest" +) + +func TestAccIbmPdrGetDeploymentStatusDataSourceBasic(t *testing.T) { + resource.Test(t, resource.TestCase{ + PreCheck: func() { acc.TestAccPreCheck(t) }, + Providers: acc.TestAccProviders, + Steps: []resource.TestStep{ + resource.TestStep{ + Config: testAccCheckIbmPdrGetDeploymentStatusDataSourceConfigBasic(), + Check: resource.ComposeTestCheckFunc( + resource.TestCheckResourceAttrSet("data.ibm_pdr_get_deployment_status.pdr_get_deployment_status_instance", "id"), + resource.TestCheckResourceAttrSet("data.ibm_pdr_get_deployment_status.pdr_get_deployment_status_instance", "instance_id"), + resource.TestCheckResourceAttrSet("data.ibm_pdr_get_deployment_status.pdr_get_deployment_status_instance", "orch_standby_node_addition_status"), + resource.TestCheckResourceAttrSet("data.ibm_pdr_get_deployment_status.pdr_get_deployment_status_instance", "orchestrator_cluster_message"), + resource.TestCheckResourceAttrSet("data.ibm_pdr_get_deployment_status.pdr_get_deployment_status_instance", "orchestrator_cluster_type"), + resource.TestCheckResourceAttrSet("data.ibm_pdr_get_deployment_status.pdr_get_deployment_status_instance", "orchestrator_config_status"), + resource.TestCheckResourceAttrSet("data.ibm_pdr_get_deployment_status.pdr_get_deployment_status_instance", "orchestrator_group_leader"), + resource.TestCheckResourceAttrSet("data.ibm_pdr_get_deployment_status.pdr_get_deployment_status_instance", "orchestrator_name"), + resource.TestCheckResourceAttrSet("data.ibm_pdr_get_deployment_status.pdr_get_deployment_status_instance", "orchestrator_status"), + resource.TestCheckResourceAttrSet("data.ibm_pdr_get_deployment_status.pdr_get_deployment_status_instance", "schematic_workspace_name"), + resource.TestCheckResourceAttrSet("data.ibm_pdr_get_deployment_status.pdr_get_deployment_status_instance", "schematic_workspace_status"), + resource.TestCheckResourceAttrSet("data.ibm_pdr_get_deployment_status.pdr_get_deployment_status_instance", "ssh_key_name"), + resource.TestCheckResourceAttrSet("data.ibm_pdr_get_deployment_status.pdr_get_deployment_status_instance", "standby_orchestrator_name"), + resource.TestCheckResourceAttrSet("data.ibm_pdr_get_deployment_status.pdr_get_deployment_status_instance", "standby_orchestrator_status"), + ), + }, + }, + }) +} + +func testAccCheckIbmPdrGetDeploymentStatusDataSourceConfigBasic() string { + return fmt.Sprintf(` + data "ibm_pdr_get_deployment_status" "pdr_get_deployment_status_instance" { + instance_id = "crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::" + } + `) +} + diff --git a/ibm/service/drautomationservice/data_source_ibm_pdr_get_dr_locations.go b/ibm/service/drautomationservice/data_source_ibm_pdr_get_dr_locations.go new file mode 100644 index 0000000000..38445c52fd --- /dev/null +++ b/ibm/service/drautomationservice/data_source_ibm_pdr_get_dr_locations.go @@ -0,0 +1,123 @@ +// Copyright IBM Corp. 2025 All Rights Reserved. +// Licensed under the Mozilla Public License v2.0 + +/* + * IBM OpenAPI Terraform Generator Version: 3.105.0-3c13b041-20250605-193116 +*/ + +package drautomationservice + +import ( + "context" + "fmt" + "log" + "time" + + "github.com/hashicorp/terraform-plugin-sdk/v2/diag" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" + + "github.com/IBM-Cloud/terraform-provider-ibm/ibm/conns" + "github.com/IBM-Cloud/terraform-provider-ibm/ibm/flex" + "github.ibm.com/DRAutomation/dra-go-sdk/drautomationservicev1" +) + +func DataSourceIbmPdrGetDrLocations() *schema.Resource { + return &schema.Resource{ + ReadContext: dataSourceIbmPdrGetDrLocationsRead, + + Schema: map[string]*schema.Schema{ + "instance_id": &schema.Schema{ + Type: schema.TypeString, + Required: true, + Description: "instance id of instance to provision.", + }, + "accept_language": &schema.Schema{ + Type: schema.TypeString, + Optional: true, + Description: "The language requested for the return document.", + }, + "if_none_match": &schema.Schema{ + Type: schema.TypeString, + Optional: true, + Description: "ETag for conditional requests (optional).", + }, + "dr_locations": &schema.Schema{ + Type: schema.TypeList, + Computed: true, + Description: "List of disaster recovery locations available for the service.", + Elem: &schema.Resource{ + Schema: map[string]*schema.Schema{ + "id": &schema.Schema{ + Type: schema.TypeString, + Computed: true, + Description: "Unique identifier of the DR location.", + }, + "name": &schema.Schema{ + Type: schema.TypeString, + Computed: true, + Description: "Name of the DR location.", + }, + }, + }, + }, + }, + } +} + +func dataSourceIbmPdrGetDrLocationsRead(context context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { + drAutomationServiceClient, err := meta.(conns.ClientSession).DrAutomationServiceV1() + if err != nil { + tfErr := flex.DiscriminatedTerraformErrorf(err, err.Error(), "(Data) ibm_pdr_get_dr_locations", "read", "initialize-client") + log.Printf("[DEBUG]\n%s", tfErr.GetDebugMessage()) + return tfErr.GetDiag() + } + + getDrLocationOptions := &drautomationservicev1.GetDrLocationOptions{} + + getDrLocationOptions.SetInstanceID(d.Get("instance_id").(string)) + if _, ok := d.GetOk("accept_language"); ok { + getDrLocationOptions.SetAcceptLanguage(d.Get("accept_language").(string)) + } + if _, ok := d.GetOk("if_none_match"); ok { + getDrLocationOptions.SetIfNoneMatch(d.Get("if_none_match").(string)) + } + + getDrLocationsResponse, _, err := drAutomationServiceClient.GetDrLocationWithContext(context, getDrLocationOptions) + if err != nil { + tfErr := flex.TerraformErrorf(err, fmt.Sprintf("GetDrLocationWithContext failed: %s", err.Error()), "(Data) ibm_pdr_get_dr_locations", "read") + log.Printf("[DEBUG]\n%s", tfErr.GetDebugMessage()) + return tfErr.GetDiag() + } + + d.SetId(dataSourceIbmPdrGetDrLocationsID(d)) + + drLocations := []map[string]interface{}{} + for _, drLocationsItem := range getDrLocationsResponse.DrLocations { + drLocationsItemMap, err := DataSourceIbmPdrGetDrLocationsDrLocationToMap(&drLocationsItem) // #nosec G601 + if err != nil { + return flex.DiscriminatedTerraformErrorf(err, err.Error(), "(Data) ibm_pdr_get_dr_locations", "read", "dr_locations-to-map").GetDiag() + } + drLocations = append(drLocations, drLocationsItemMap) + } + if err = d.Set("dr_locations", drLocations); err != nil { + return flex.DiscriminatedTerraformErrorf(err, fmt.Sprintf("Error setting dr_locations: %s", err), "(Data) ibm_pdr_get_dr_locations", "read", "set-dr_locations").GetDiag() + } + + return nil +} + +// dataSourceIbmPdrGetDrLocationsID returns a reasonable ID for the list. +func dataSourceIbmPdrGetDrLocationsID(d *schema.ResourceData) string { + return time.Now().UTC().String() +} + +func DataSourceIbmPdrGetDrLocationsDrLocationToMap(model *drautomationservicev1.DrLocation) (map[string]interface{}, error) { + modelMap := make(map[string]interface{}) + if model.ID != nil { + modelMap["id"] = *model.ID + } + if model.Name != nil { + modelMap["name"] = *model.Name + } + return modelMap, nil +} diff --git a/ibm/service/drautomationservice/data_source_ibm_pdr_get_dr_locations_test.go b/ibm/service/drautomationservice/data_source_ibm_pdr_get_dr_locations_test.go new file mode 100644 index 0000000000..68a77e2c5d --- /dev/null +++ b/ibm/service/drautomationservice/data_source_ibm_pdr_get_dr_locations_test.go @@ -0,0 +1,64 @@ +// Copyright IBM Corp. 2025 All Rights Reserved. +// Licensed under the Mozilla Public License v2.0 + +/* + * IBM OpenAPI Terraform Generator Version: 3.105.0-3c13b041-20250605-193116 + */ + +package drautomationservice_test + +import ( + "fmt" + "testing" + + "github.com/hashicorp/terraform-plugin-testing/helper/resource" + + acc "github.com/IBM-Cloud/terraform-provider-ibm/ibm/acctest" + "github.com/IBM-Cloud/terraform-provider-ibm/ibm/service/drautomationservice" + "github.com/IBM/go-sdk-core/v5/core" + "github.com/stretchr/testify/assert" + "github.ibm.com/DRAutomation/dra-go-sdk/drautomationservicev1" +) + +func TestAccIbmPdrGetDrLocationsDataSourceBasic(t *testing.T) { + resource.Test(t, resource.TestCase{ + PreCheck: func() { acc.TestAccPreCheck(t) }, + Providers: acc.TestAccProviders, + Steps: []resource.TestStep{ + resource.TestStep{ + Config: testAccCheckIbmPdrGetDrLocationsDataSourceConfigBasic(), + Check: resource.ComposeTestCheckFunc( + resource.TestCheckResourceAttrSet("data.ibm_pdr_get_dr_locations.pdr_get_dr_locations_instance", "id"), + resource.TestCheckResourceAttrSet("data.ibm_pdr_get_dr_locations.pdr_get_dr_locations_instance", "instance_id"), + resource.TestCheckResourceAttrSet("data.ibm_pdr_get_dr_locations.pdr_get_dr_locations_instance", "dr_locations.#"), + ), + }, + }, + }) +} + +func testAccCheckIbmPdrGetDrLocationsDataSourceConfigBasic() string { + return fmt.Sprintf(` + data "ibm_pdr_get_dr_locations" "pdr_get_dr_locations_instance" { + instance_id = "crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::" + } + `) +} + +func TestDataSourceIbmPdrGetDrLocationsDrLocationToMap(t *testing.T) { + checkResult := func(result map[string]interface{}) { + model := make(map[string]interface{}) + model["id"] = "loc123" + model["name"] = "US-East-1" + + assert.Equal(t, result, model) + } + + model := new(drautomationservicev1.DrLocation) + model.ID = core.StringPtr("loc123") + model.Name = core.StringPtr("US-East-1") + + result, err := drautomationservice.DataSourceIbmPdrGetDrLocationsDrLocationToMap(model) + assert.Nil(t, err) + checkResult(result) +} diff --git a/ibm/service/drautomationservice/data_source_ibm_pdr_get_dr_summary_response.go b/ibm/service/drautomationservice/data_source_ibm_pdr_get_dr_summary_response.go new file mode 100644 index 0000000000..d83b872067 --- /dev/null +++ b/ibm/service/drautomationservice/data_source_ibm_pdr_get_dr_summary_response.go @@ -0,0 +1,337 @@ +// Copyright IBM Corp. 2025 All Rights Reserved. +// Licensed under the Mozilla Public License v2.0 + +/* + * IBM OpenAPI Terraform Generator Version: 3.105.0-3c13b041-20250605-193116 +*/ + +package drautomationservice + +import ( + "context" + "fmt" + "log" + "time" + + "github.com/hashicorp/terraform-plugin-sdk/v2/diag" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" + + "github.com/IBM-Cloud/terraform-provider-ibm/ibm/conns" + "github.com/IBM-Cloud/terraform-provider-ibm/ibm/flex" + "github.ibm.com/DRAutomation/dra-go-sdk/drautomationservicev1" +) + +func DataSourceIbmPdrGetDrSummaryResponse() *schema.Resource { + return &schema.Resource{ + ReadContext: dataSourceIbmPdrGetDrSummaryResponseRead, + + Schema: map[string]*schema.Schema{ + "instance_id": &schema.Schema{ + Type: schema.TypeString, + Required: true, + Description: "instance id of instance to provision.", + }, + "accept_language": &schema.Schema{ + Type: schema.TypeString, + Optional: true, + Description: "The language requested for the return document.", + }, + "if_none_match": &schema.Schema{ + Type: schema.TypeString, + Optional: true, + Description: "ETag for conditional requests (optional).", + }, + "managed_vm_list": &schema.Schema{ + Type: schema.TypeMap, + Computed: true, + Description: "A flexible schema placeholder to allow any JSON value (aligns with interface{} in Go).", + Elem: &schema.Schema{ + Type: schema.TypeString, + }, + }, + "orchestrator_details": &schema.Schema{ + Type: schema.TypeList, + Computed: true, + Description: "Contains details about the orchestrator configuration.", + Elem: &schema.Resource{ + Schema: map[string]*schema.Schema{ + "location_id": &schema.Schema{ + Type: schema.TypeString, + Computed: true, + Description: "Location identifier.", + }, + "orch_ext_connectivity_status": &schema.Schema{ + Type: schema.TypeString, + Computed: true, + Description: "External connectivity status of the orchestrator.", + }, + "orch_standby_node_addition_status": &schema.Schema{ + Type: schema.TypeString, + Computed: true, + Description: "Status of standby node addition.", + }, + "orchestrator_cluster_message": &schema.Schema{ + Type: schema.TypeString, + Computed: true, + Description: "Message regarding orchestrator cluster status.", + }, + "orchestrator_cluster_type": &schema.Schema{ + Type: schema.TypeString, + Computed: true, + Description: "Type of orchestrator cluster.", + }, + "orchestrator_config_status": &schema.Schema{ + Type: schema.TypeString, + Computed: true, + Description: "Configuration status of the orchestrator.", + }, + "orchestrator_group_leader": &schema.Schema{ + Type: schema.TypeString, + Computed: true, + Description: "Leader node of the orchestrator group.", + }, + "orchestrator_name": &schema.Schema{ + Type: schema.TypeString, + Computed: true, + Description: "Name of the primary orchestrator.", + }, + "orchestrator_status": &schema.Schema{ + Type: schema.TypeString, + Computed: true, + Description: "Status of the primary orchestrator.", + }, + "orchestrator_workspace_name": &schema.Schema{ + Type: schema.TypeString, + Computed: true, + Description: "Name of the orchestrator workspace.", + }, + "proxy_ip": &schema.Schema{ + Type: schema.TypeString, + Computed: true, + Description: "IP address of the proxy.", + }, + "schematic_workspace_name": &schema.Schema{ + Type: schema.TypeString, + Computed: true, + Description: "Name of the schematic workspace.", + }, + "schematic_workspace_status": &schema.Schema{ + Type: schema.TypeString, + Computed: true, + Description: "Status of the schematic workspace.", + }, + "ssh_key_name": &schema.Schema{ + Type: schema.TypeString, + Computed: true, + Description: "SSH key name used for the orchestrator.", + }, + "standby_orchestrator_name": &schema.Schema{ + Type: schema.TypeString, + Computed: true, + Description: "Name of the standby orchestrator.", + }, + "standby_orchestrator_status": &schema.Schema{ + Type: schema.TypeString, + Computed: true, + Description: "Status of the standby orchestrator.", + }, + "standby_orchestrator_workspace_name": &schema.Schema{ + Type: schema.TypeString, + Computed: true, + Description: "Name of the standby orchestrator workspace.", + }, + "transit_gateway_name": &schema.Schema{ + Type: schema.TypeString, + Computed: true, + Description: "Name of the transit gateway.", + }, + "vpc_name": &schema.Schema{ + Type: schema.TypeString, + Computed: true, + Description: "Name of the VPC.", + }, + }, + }, + }, + "service_details": &schema.Schema{ + Type: schema.TypeList, + Computed: true, + Description: "Contains details about the DR automation service.", + Elem: &schema.Resource{ + Schema: map[string]*schema.Schema{ + "crn": &schema.Schema{ + Type: schema.TypeString, + Computed: true, + Description: "Cloud Resource Name identifier.", + }, + "deployment_name": &schema.Schema{ + Type: schema.TypeString, + Computed: true, + Description: "Name of the deployment.", + }, + "description": &schema.Schema{ + Type: schema.TypeString, + Computed: true, + Description: "Description of the primary service.", + }, + "is_ksys_ha": &schema.Schema{ + Type: schema.TypeBool, + Computed: true, + Description: "Flag indicating if KSYS HA is enabled.", + }, + "primary_ip_address": &schema.Schema{ + Type: schema.TypeString, + Computed: true, + Description: "IP address of the primary service.", + }, + "primary_orchestrator_dashboard_url": &schema.Schema{ + Type: schema.TypeString, + Computed: true, + Description: "Primary Orchestrator Dashboard URL.", + }, + "recovery_location": &schema.Schema{ + Type: schema.TypeString, + Computed: true, + Description: "Location for disaster recovery.", + }, + "resource_group": &schema.Schema{ + Type: schema.TypeString, + Computed: true, + Description: "Resource group name.", + }, + "standby_description": &schema.Schema{ + Type: schema.TypeString, + Computed: true, + Description: "Description of the standby service.", + }, + "standby_ip_address": &schema.Schema{ + Type: schema.TypeString, + Computed: true, + Description: "IP address of the standby service.", + }, + "standby_orchestrator_dashboard_url": &schema.Schema{ + Type: schema.TypeString, + Computed: true, + Description: "Standby Orchestrator Dashboard URL.", + }, + "standby_status": &schema.Schema{ + Type: schema.TypeString, + Computed: true, + Description: "Current status of the standby service.", + }, + "status": &schema.Schema{ + Type: schema.TypeString, + Computed: true, + Description: "Current status of the primary service.", + }, + }, + }, + }, + }, + } +} + +func dataSourceIbmPdrGetDrSummaryResponseRead(context context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { + drAutomationServiceClient, err := meta.(conns.ClientSession).DrAutomationServiceV1() + if err != nil { + tfErr := flex.DiscriminatedTerraformErrorf(err, err.Error(), "(Data) ibm_pdr_get_dr_summary_response", "read", "initialize-client") + log.Printf("[DEBUG]\n%s", tfErr.GetDebugMessage()) + return tfErr.GetDiag() + } + + getDrSummaryOptions := &drautomationservicev1.GetDrSummaryOptions{} + + getDrSummaryOptions.SetInstanceID(d.Get("instance_id").(string)) + if _, ok := d.GetOk("accept_language"); ok { + getDrSummaryOptions.SetAcceptLanguage(d.Get("accept_language").(string)) + } + if _, ok := d.GetOk("if_none_match"); ok { + getDrSummaryOptions.SetIfNoneMatch(d.Get("if_none_match").(string)) + } + + drAutomationGetSummaryResponse, _, err := drAutomationServiceClient.GetDrSummaryWithContext(context, getDrSummaryOptions) + if err != nil { + tfErr := flex.TerraformErrorf(err, fmt.Sprintf("GetDrSummaryWithContext failed: %s", err.Error()), "(Data) ibm_pdr_get_dr_summary_response", "read") + log.Printf("[DEBUG]\n%s", tfErr.GetDebugMessage()) + return tfErr.GetDiag() + } + + d.SetId(dataSourceIbmPdrGetDrSummaryResponseID(d)) + + convertedMap := make(map[string]interface{}, len(drAutomationGetSummaryResponse.ManagedVmList)) + for k, v := range drAutomationGetSummaryResponse.ManagedVmList { + convertedMap[k] = v + } + if err = d.Set("managed_vm_list", flex.Flatten(convertedMap)); err != nil { + return flex.DiscriminatedTerraformErrorf(err, fmt.Sprintf("Error setting managed_vm_list: %s", err), "(Data) ibm_pdr_get_dr_summary_response", "read", "set-managed_vm_list").GetDiag() + } + + orchestratorDetails := []map[string]interface{}{} + orchestratorDetailsMap, err := DataSourceIbmPdrGetDrSummaryResponseOrchestratorDetailsToMap(drAutomationGetSummaryResponse.OrchestratorDetails) + if err != nil { + return flex.DiscriminatedTerraformErrorf(err, err.Error(), "(Data) ibm_pdr_get_dr_summary_response", "read", "orchestrator_details-to-map").GetDiag() + } + orchestratorDetails = append(orchestratorDetails, orchestratorDetailsMap) + if err = d.Set("orchestrator_details", orchestratorDetails); err != nil { + return flex.DiscriminatedTerraformErrorf(err, fmt.Sprintf("Error setting orchestrator_details: %s", err), "(Data) ibm_pdr_get_dr_summary_response", "read", "set-orchestrator_details").GetDiag() + } + + serviceDetails := []map[string]interface{}{} + serviceDetailsMap, err := DataSourceIbmPdrGetDrSummaryResponseServiceDetailsToMap(drAutomationGetSummaryResponse.ServiceDetails) + if err != nil { + return flex.DiscriminatedTerraformErrorf(err, err.Error(), "(Data) ibm_pdr_get_dr_summary_response", "read", "service_details-to-map").GetDiag() + } + serviceDetails = append(serviceDetails, serviceDetailsMap) + if err = d.Set("service_details", serviceDetails); err != nil { + return flex.DiscriminatedTerraformErrorf(err, fmt.Sprintf("Error setting service_details: %s", err), "(Data) ibm_pdr_get_dr_summary_response", "read", "set-service_details").GetDiag() + } + + return nil +} + +// dataSourceIbmPdrGetDrSummaryResponseID returns a reasonable ID for the list. +func dataSourceIbmPdrGetDrSummaryResponseID(d *schema.ResourceData) string { + return time.Now().UTC().String() +} + +func DataSourceIbmPdrGetDrSummaryResponseOrchestratorDetailsToMap(model *drautomationservicev1.OrchestratorDetails) (map[string]interface{}, error) { + modelMap := make(map[string]interface{}) + modelMap["location_id"] = *model.LocationID + modelMap["orch_ext_connectivity_status"] = *model.OrchExtConnectivityStatus + modelMap["orch_standby_node_addition_status"] = *model.OrchStandbyNodeAdditionStatus + modelMap["orchestrator_cluster_message"] = *model.OrchestratorClusterMessage + modelMap["orchestrator_cluster_type"] = *model.OrchestratorClusterType + modelMap["orchestrator_config_status"] = *model.OrchestratorConfigStatus + modelMap["orchestrator_group_leader"] = *model.OrchestratorGroupLeader + modelMap["orchestrator_name"] = *model.OrchestratorName + modelMap["orchestrator_status"] = *model.OrchestratorStatus + modelMap["orchestrator_workspace_name"] = *model.OrchestratorWorkspaceName + modelMap["proxy_ip"] = *model.ProxyIp + modelMap["schematic_workspace_name"] = *model.SchematicWorkspaceName + modelMap["schematic_workspace_status"] = *model.SchematicWorkspaceStatus + modelMap["ssh_key_name"] = *model.SshKeyName + modelMap["standby_orchestrator_name"] = *model.StandbyOrchestratorName + modelMap["standby_orchestrator_status"] = *model.StandbyOrchestratorStatus + modelMap["standby_orchestrator_workspace_name"] = *model.StandbyOrchestratorWorkspaceName + modelMap["transit_gateway_name"] = *model.TransitGatewayName + modelMap["vpc_name"] = *model.VpcName + return modelMap, nil +} + +func DataSourceIbmPdrGetDrSummaryResponseServiceDetailsToMap(model *drautomationservicev1.ServiceDetails) (map[string]interface{}, error) { + modelMap := make(map[string]interface{}) + modelMap["crn"] = *model.Crn + modelMap["deployment_name"] = *model.DeploymentName + modelMap["description"] = *model.Description + modelMap["is_ksys_ha"] = *model.IsKsysHa + modelMap["primary_ip_address"] = *model.PrimaryIpAddress + modelMap["primary_orchestrator_dashboard_url"] = *model.PrimaryOrchestratorDashboardURL + modelMap["recovery_location"] = *model.RecoveryLocation + modelMap["resource_group"] = *model.ResourceGroup + modelMap["standby_description"] = *model.StandbyDescription + modelMap["standby_ip_address"] = *model.StandbyIpAddress + modelMap["standby_orchestrator_dashboard_url"] = *model.StandbyOrchestratorDashboardURL + modelMap["standby_status"] = *model.StandbyStatus + modelMap["status"] = *model.Status + return modelMap, nil +} diff --git a/ibm/service/drautomationservice/data_source_ibm_pdr_get_dr_summary_response_test.go b/ibm/service/drautomationservice/data_source_ibm_pdr_get_dr_summary_response_test.go new file mode 100644 index 0000000000..0c7d136fd5 --- /dev/null +++ b/ibm/service/drautomationservice/data_source_ibm_pdr_get_dr_summary_response_test.go @@ -0,0 +1,140 @@ +// Copyright IBM Corp. 2025 All Rights Reserved. +// Licensed under the Mozilla Public License v2.0 + +/* + * IBM OpenAPI Terraform Generator Version: 3.105.0-3c13b041-20250605-193116 + */ + +package drautomationservice_test + +import ( + "fmt" + "testing" + + "github.com/hashicorp/terraform-plugin-testing/helper/resource" + + acc "github.com/IBM-Cloud/terraform-provider-ibm/ibm/acctest" + "github.com/IBM-Cloud/terraform-provider-ibm/ibm/service/drautomationservice" + "github.com/IBM/go-sdk-core/v5/core" + "github.com/stretchr/testify/assert" + "github.ibm.com/DRAutomation/dra-go-sdk/drautomationservicev1" +) + +func TestAccIbmPdrGetDrSummaryResponseDataSourceBasic(t *testing.T) { + resource.Test(t, resource.TestCase{ + PreCheck: func() { acc.TestAccPreCheck(t) }, + Providers: acc.TestAccProviders, + Steps: []resource.TestStep{ + resource.TestStep{ + Config: testAccCheckIbmPdrGetDrSummaryResponseDataSourceConfigBasic(), + Check: resource.ComposeTestCheckFunc( + resource.TestCheckResourceAttrSet("data.ibm_pdr_get_dr_summary_response.pdr_get_dr_summary_response_instance", "id"), + resource.TestCheckResourceAttrSet("data.ibm_pdr_get_dr_summary_response.pdr_get_dr_summary_response_instance", "instance_id"), + resource.TestCheckResourceAttrSet("data.ibm_pdr_get_dr_summary_response.pdr_get_dr_summary_response_instance", "managed_vm_list.%"), + resource.TestCheckResourceAttrSet("data.ibm_pdr_get_dr_summary_response.pdr_get_dr_summary_response_instance", "orchestrator_details.#"), + resource.TestCheckResourceAttrSet("data.ibm_pdr_get_dr_summary_response.pdr_get_dr_summary_response_instance", "service_details.#"), + ), + }, + }, + }) +} + +func testAccCheckIbmPdrGetDrSummaryResponseDataSourceConfigBasic() string { + return fmt.Sprintf(` + data "ibm_pdr_get_dr_summary_response" "pdr_get_dr_summary_response_instance" { + instance_id = "crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::" + } + `) +} + +func TestDataSourceIbmPdrGetDrSummaryResponseOrchestratorDetailsToMap(t *testing.T) { + checkResult := func(result map[string]interface{}) { + model := make(map[string]interface{}) + model["location_id"] = "testString" + model["orch_ext_connectivity_status"] = "testString" + model["orch_standby_node_addition_status"] = "testString" + model["orchestrator_cluster_message"] = "testString" + model["orchestrator_cluster_type"] = "testString" + model["orchestrator_config_status"] = "testString" + model["orchestrator_group_leader"] = "testString" + model["orchestrator_name"] = "testString" + model["orchestrator_status"] = "testString" + model["orchestrator_workspace_name"] = "testString" + model["proxy_ip"] = "testString" + model["schematic_workspace_name"] = "testString" + model["schematic_workspace_status"] = "testString" + model["ssh_key_name"] = "testString" + model["standby_orchestrator_name"] = "testString" + model["standby_orchestrator_status"] = "testString" + model["standby_orchestrator_workspace_name"] = "testString" + model["transit_gateway_name"] = "testString" + model["vpc_name"] = "testString" + + assert.Equal(t, result, model) + } + + model := new(drautomationservicev1.OrchestratorDetails) + model.LocationID = core.StringPtr("testString") + model.OrchExtConnectivityStatus = core.StringPtr("testString") + model.OrchStandbyNodeAdditionStatus = core.StringPtr("testString") + model.OrchestratorClusterMessage = core.StringPtr("testString") + model.OrchestratorClusterType = core.StringPtr("testString") + model.OrchestratorConfigStatus = core.StringPtr("testString") + model.OrchestratorGroupLeader = core.StringPtr("testString") + model.OrchestratorName = core.StringPtr("testString") + model.OrchestratorStatus = core.StringPtr("testString") + model.OrchestratorWorkspaceName = core.StringPtr("testString") + model.ProxyIp = core.StringPtr("testString") + model.SchematicWorkspaceName = core.StringPtr("testString") + model.SchematicWorkspaceStatus = core.StringPtr("testString") + model.SshKeyName = core.StringPtr("testString") + model.StandbyOrchestratorName = core.StringPtr("testString") + model.StandbyOrchestratorStatus = core.StringPtr("testString") + model.StandbyOrchestratorWorkspaceName = core.StringPtr("testString") + model.TransitGatewayName = core.StringPtr("testString") + model.VpcName = core.StringPtr("testString") + + result, err := drautomationservice.DataSourceIbmPdrGetDrSummaryResponseOrchestratorDetailsToMap(model) + assert.Nil(t, err) + checkResult(result) +} + +func TestDataSourceIbmPdrGetDrSummaryResponseServiceDetailsToMap(t *testing.T) { + checkResult := func(result map[string]interface{}) { + model := make(map[string]interface{}) + model["crn"] = "testString" + model["deployment_name"] = "testString" + model["description"] = "testString" + model["is_ksys_ha"] = true + model["primary_ip_address"] = "testString" + model["primary_orchestrator_dashboard_url"] = "testString" + model["recovery_location"] = "testString" + model["resource_group"] = "testString" + model["standby_description"] = "testString" + model["standby_ip_address"] = "testString" + model["standby_orchestrator_dashboard_url"] = "testString" + model["standby_status"] = "testString" + model["status"] = "testString" + + assert.Equal(t, result, model) + } + + model := new(drautomationservicev1.ServiceDetails) + model.Crn = core.StringPtr("testString") + model.DeploymentName = core.StringPtr("testString") + model.Description = core.StringPtr("testString") + model.IsKsysHa = core.BoolPtr(true) + model.PrimaryIpAddress = core.StringPtr("testString") + model.PrimaryOrchestratorDashboardURL = core.StringPtr("testString") + model.RecoveryLocation = core.StringPtr("testString") + model.ResourceGroup = core.StringPtr("testString") + model.StandbyDescription = core.StringPtr("testString") + model.StandbyIpAddress = core.StringPtr("testString") + model.StandbyOrchestratorDashboardURL = core.StringPtr("testString") + model.StandbyStatus = core.StringPtr("testString") + model.Status = core.StringPtr("testString") + + result, err := drautomationservice.DataSourceIbmPdrGetDrSummaryResponseServiceDetailsToMap(model) + assert.Nil(t, err) + checkResult(result) +} diff --git a/ibm/service/drautomationservice/data_source_ibm_pdr_get_event.go b/ibm/service/drautomationservice/data_source_ibm_pdr_get_event.go new file mode 100644 index 0000000000..5122994db1 --- /dev/null +++ b/ibm/service/drautomationservice/data_source_ibm_pdr_get_event.go @@ -0,0 +1,237 @@ +// Copyright IBM Corp. 2025 All Rights Reserved. +// Licensed under the Mozilla Public License v2.0 + +/* + * IBM OpenAPI Terraform Generator Version: 3.105.0-3c13b041-20250605-193116 +*/ + +package drautomationservice + +import ( + "context" + "fmt" + "log" + "time" + + "github.com/hashicorp/terraform-plugin-sdk/v2/diag" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" + + "github.com/IBM-Cloud/terraform-provider-ibm/ibm/conns" + "github.com/IBM-Cloud/terraform-provider-ibm/ibm/flex" + "github.com/IBM/go-sdk-core/v5/core" + "github.ibm.com/DRAutomation/dra-go-sdk/drautomationservicev1" +) + +func DataSourceIbmPdrGetEvent() *schema.Resource { + return &schema.Resource{ + ReadContext: dataSourceIbmPdrGetEventRead, + + Schema: map[string]*schema.Schema{ + "provision_id": &schema.Schema{ + Type: schema.TypeString, + Required: true, + Description: "provision id.", + }, + "event_id": &schema.Schema{ + Type: schema.TypeString, + Required: true, + Description: "Event ID.", + }, + "accept_language": &schema.Schema{ + Type: schema.TypeString, + Optional: true, + Description: "The language requested for the return document.", + }, + "if_none_match": &schema.Schema{ + Type: schema.TypeString, + Optional: true, + Description: "ETag for conditional requests (optional).", + }, + "action": &schema.Schema{ + Type: schema.TypeString, + Computed: true, + Description: "Type of action for this event.", + }, + "api_source": &schema.Schema{ + Type: schema.TypeString, + Computed: true, + Description: "Source of API when it being executed.", + }, + "level": &schema.Schema{ + Type: schema.TypeString, + Computed: true, + Description: "Level of the event (notice, info, warning, error).", + }, + "message": &schema.Schema{ + Type: schema.TypeString, + Computed: true, + Description: "The (translated) message of the event.", + }, + "message_data": &schema.Schema{ + Type: schema.TypeMap, + Computed: true, + Description: "A flexible schema placeholder to allow any JSON value (aligns with interface{} in Go).", + Elem: &schema.Schema{ + Type: schema.TypeString, + }, + }, + "metadata": &schema.Schema{ + Type: schema.TypeMap, + Computed: true, + Description: "A flexible schema placeholder to allow any JSON value (aligns with interface{} in Go).", + Elem: &schema.Schema{ + Type: schema.TypeString, + }, + }, + "resource": &schema.Schema{ + Type: schema.TypeString, + Computed: true, + Description: "Type of resource for this event.", + }, + "time": &schema.Schema{ + Type: schema.TypeString, + Computed: true, + Description: "Time of activity in ISO 8601 - RFC3339.", + }, + "timestamp": &schema.Schema{ + Type: schema.TypeString, + Computed: true, + Description: "Time of activity in unix epoch.", + }, + "user": &schema.Schema{ + Type: schema.TypeList, + Computed: true, + Description: "Information about a user associated with an event.", + Elem: &schema.Resource{ + Schema: map[string]*schema.Schema{ + "email": &schema.Schema{ + Type: schema.TypeString, + Computed: true, + Description: "Email of the User.", + }, + "name": &schema.Schema{ + Type: schema.TypeString, + Computed: true, + Description: "Name of the User.", + }, + "user_id": &schema.Schema{ + Type: schema.TypeString, + Computed: true, + Description: "ID of user who created/caused the event.", + }, + }, + }, + }, + }, + } +} + +func dataSourceIbmPdrGetEventRead(context context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { + drAutomationServiceClient, err := meta.(conns.ClientSession).DrAutomationServiceV1() + if err != nil { + tfErr := flex.DiscriminatedTerraformErrorf(err, err.Error(), "(Data) ibm_pdr_get_event", "read", "initialize-client") + log.Printf("[DEBUG]\n%s", tfErr.GetDebugMessage()) + return tfErr.GetDiag() + } + + getEventOptions := &drautomationservicev1.GetEventOptions{} + + getEventOptions.SetProvisionID(d.Get("provision_id").(string)) + getEventOptions.SetEventID(d.Get("event_id").(string)) + if _, ok := d.GetOk("accept_language"); ok { + getEventOptions.SetAcceptLanguage(d.Get("accept_language").(string)) + } + if _, ok := d.GetOk("if_none_match"); ok { + getEventOptions.SetIfNoneMatch(d.Get("if_none_match").(string)) + } + + event, _, err := drAutomationServiceClient.GetEventWithContext(context, getEventOptions) + if err != nil { + tfErr := flex.TerraformErrorf(err, fmt.Sprintf("GetEventWithContext failed: %s", err.Error()), "(Data) ibm_pdr_get_event", "read") + log.Printf("[DEBUG]\n%s", tfErr.GetDebugMessage()) + return tfErr.GetDiag() + } + + d.SetId(dataSourceIbmPdrGetEventID(d)) + + if err = d.Set("action", event.Action); err != nil { + return flex.DiscriminatedTerraformErrorf(err, fmt.Sprintf("Error setting action: %s", err), "(Data) ibm_pdr_get_event", "read", "set-action").GetDiag() + } + + if !core.IsNil(event.ApiSource) { + if err = d.Set("api_source", event.ApiSource); err != nil { + return flex.DiscriminatedTerraformErrorf(err, fmt.Sprintf("Error setting api_source: %s", err), "(Data) ibm_pdr_get_event", "read", "set-api_source").GetDiag() + } + } + + if err = d.Set("level", event.Level); err != nil { + return flex.DiscriminatedTerraformErrorf(err, fmt.Sprintf("Error setting level: %s", err), "(Data) ibm_pdr_get_event", "read", "set-level").GetDiag() + } + + if err = d.Set("message", event.Message); err != nil { + return flex.DiscriminatedTerraformErrorf(err, fmt.Sprintf("Error setting message: %s", err), "(Data) ibm_pdr_get_event", "read", "set-message").GetDiag() + } + + if !core.IsNil(event.MessageData) { + convertedMap := make(map[string]interface{}, len(event.MessageData)) + for k, v := range event.MessageData { + convertedMap[k] = v + } + if err = d.Set("message_data", flex.Flatten(convertedMap)); err != nil { + return flex.DiscriminatedTerraformErrorf(err, fmt.Sprintf("Error setting message_data: %s", err), "(Data) ibm_pdr_get_event", "read", "set-message_data").GetDiag() + } + } + + if !core.IsNil(event.Metadata) { + convertedMap := make(map[string]interface{}, len(event.Metadata)) + for k, v := range event.Metadata { + convertedMap[k] = v + } + if err = d.Set("metadata", flex.Flatten(convertedMap)); err != nil { + return flex.DiscriminatedTerraformErrorf(err, fmt.Sprintf("Error setting metadata: %s", err), "(Data) ibm_pdr_get_event", "read", "set-metadata").GetDiag() + } + } + + if err = d.Set("resource", event.Resource); err != nil { + return flex.DiscriminatedTerraformErrorf(err, fmt.Sprintf("Error setting resource: %s", err), "(Data) ibm_pdr_get_event", "read", "set-resource").GetDiag() + } + + if err = d.Set("time", flex.DateTimeToString(event.Time)); err != nil { + return flex.DiscriminatedTerraformErrorf(err, fmt.Sprintf("Error setting time: %s", err), "(Data) ibm_pdr_get_event", "read", "set-time").GetDiag() + } + + if err = d.Set("timestamp", event.Timestamp); err != nil { + return flex.DiscriminatedTerraformErrorf(err, fmt.Sprintf("Error setting timestamp: %s", err), "(Data) ibm_pdr_get_event", "read", "set-timestamp").GetDiag() + } + + if !core.IsNil(event.User) { + user := []map[string]interface{}{} + userMap, err := DataSourceIbmPdrGetEventEventUserToMap(event.User) + if err != nil { + return flex.DiscriminatedTerraformErrorf(err, err.Error(), "(Data) ibm_pdr_get_event", "read", "user-to-map").GetDiag() + } + user = append(user, userMap) + if err = d.Set("user", user); err != nil { + return flex.DiscriminatedTerraformErrorf(err, fmt.Sprintf("Error setting user: %s", err), "(Data) ibm_pdr_get_event", "read", "set-user").GetDiag() + } + } + + return nil +} + +// dataSourceIbmPdrGetEventID returns a reasonable ID for the list. +func dataSourceIbmPdrGetEventID(d *schema.ResourceData) string { + return time.Now().UTC().String() +} + +func DataSourceIbmPdrGetEventEventUserToMap(model *drautomationservicev1.EventUser) (map[string]interface{}, error) { + modelMap := make(map[string]interface{}) + if model.Email != nil { + modelMap["email"] = *model.Email + } + if model.Name != nil { + modelMap["name"] = *model.Name + } + modelMap["user_id"] = *model.UserID + return modelMap, nil +} diff --git a/ibm/service/drautomationservice/data_source_ibm_pdr_get_event_test.go b/ibm/service/drautomationservice/data_source_ibm_pdr_get_event_test.go new file mode 100644 index 0000000000..10ed3f36f2 --- /dev/null +++ b/ibm/service/drautomationservice/data_source_ibm_pdr_get_event_test.go @@ -0,0 +1,73 @@ +// Copyright IBM Corp. 2025 All Rights Reserved. +// Licensed under the Mozilla Public License v2.0 + +/* + * IBM OpenAPI Terraform Generator Version: 3.105.0-3c13b041-20250605-193116 + */ + +package drautomationservice_test + +import ( + "fmt" + "testing" + + "github.com/hashicorp/terraform-plugin-testing/helper/resource" + + acc "github.com/IBM-Cloud/terraform-provider-ibm/ibm/acctest" + "github.com/IBM-Cloud/terraform-provider-ibm/ibm/service/drautomationservice" + "github.com/IBM/go-sdk-core/v5/core" + "github.com/stretchr/testify/assert" + "github.ibm.com/DRAutomation/dra-go-sdk/drautomationservicev1" +) + +func TestAccIbmPdrGetEventDataSourceBasic(t *testing.T) { + resource.Test(t, resource.TestCase{ + PreCheck: func() { acc.TestAccPreCheck(t) }, + Providers: acc.TestAccProviders, + Steps: []resource.TestStep{ + resource.TestStep{ + Config: testAccCheckIbmPdrGetEventDataSourceConfigBasic(), + Check: resource.ComposeTestCheckFunc( + resource.TestCheckResourceAttrSet("data.ibm_pdr_get_event.pdr_get_event_instance", "id"), + resource.TestCheckResourceAttrSet("data.ibm_pdr_get_event.pdr_get_event_instance", "provision_id"), + resource.TestCheckResourceAttrSet("data.ibm_pdr_get_event.pdr_get_event_instance", "event_id"), + resource.TestCheckResourceAttrSet("data.ibm_pdr_get_event.pdr_get_event_instance", "action"), + resource.TestCheckResourceAttrSet("data.ibm_pdr_get_event.pdr_get_event_instance", "level"), + resource.TestCheckResourceAttrSet("data.ibm_pdr_get_event.pdr_get_event_instance", "message"), + resource.TestCheckResourceAttrSet("data.ibm_pdr_get_event.pdr_get_event_instance", "resource"), + resource.TestCheckResourceAttrSet("data.ibm_pdr_get_event.pdr_get_event_instance", "time"), + resource.TestCheckResourceAttrSet("data.ibm_pdr_get_event.pdr_get_event_instance", "timestamp"), + ), + }, + }, + }) +} + +func testAccCheckIbmPdrGetEventDataSourceConfigBasic() string { + return fmt.Sprintf(` + data "ibm_pdr_get_event" "pdr_get_event_instance" { + provision_id = "crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::" + event_id = "1c22aa1c-5ec6-438d-b11a-3984dab6d438" + } + `) +} + +func TestDataSourceIbmPdrGetEventEventUserToMap(t *testing.T) { + checkResult := func(result map[string]interface{}) { + model := make(map[string]interface{}) + model["email"] = "abcuser@ibm.com" + model["name"] = "abcuser" + model["user_id"] = "IBMid-695000abc7E" + + assert.Equal(t, result, model) + } + + model := new(drautomationservicev1.EventUser) + model.Email = core.StringPtr("abcuser@ibm.com") + model.Name = core.StringPtr("abcuser") + model.UserID = core.StringPtr("IBMid-695000abc7E") + + result, err := drautomationservice.DataSourceIbmPdrGetEventEventUserToMap(model) + assert.Nil(t, err) + checkResult(result) +} diff --git a/ibm/service/drautomationservice/data_source_ibm_pdr_get_events.go b/ibm/service/drautomationservice/data_source_ibm_pdr_get_events.go new file mode 100644 index 0000000000..2ae86d7aa0 --- /dev/null +++ b/ibm/service/drautomationservice/data_source_ibm_pdr_get_events.go @@ -0,0 +1,254 @@ +// Copyright IBM Corp. 2025 All Rights Reserved. +// Licensed under the Mozilla Public License v2.0 + +/* + * IBM OpenAPI Terraform Generator Version: 3.105.0-3c13b041-20250605-193116 +*/ + +package drautomationservice + +import ( + "context" + "fmt" + "log" + "time" + + "github.com/hashicorp/terraform-plugin-sdk/v2/diag" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" + + "github.com/IBM-Cloud/terraform-provider-ibm/ibm/conns" + "github.com/IBM-Cloud/terraform-provider-ibm/ibm/flex" + "github.ibm.com/DRAutomation/dra-go-sdk/drautomationservicev1" +) + +func DataSourceIbmPdrGetEvents() *schema.Resource { + return &schema.Resource{ + ReadContext: dataSourceIbmPdrGetEventsRead, + + Schema: map[string]*schema.Schema{ + "provision_id": &schema.Schema{ + Type: schema.TypeString, + Required: true, + Description: "provision id.", + }, + "time": &schema.Schema{ + Type: schema.TypeString, + Optional: true, + Description: "(deprecated - use from_time) A time in either ISO 8601 or unix epoch format.", + }, + "from_time": &schema.Schema{ + Type: schema.TypeString, + Optional: true, + Description: "A from query time in either ISO 8601 or unix epoch format.", + }, + "to_time": &schema.Schema{ + Type: schema.TypeString, + Optional: true, + Description: "A to query time in either ISO 8601 or unix epoch format.", + }, + "accept_language": &schema.Schema{ + Type: schema.TypeString, + Optional: true, + Description: "The language requested for the return document.", + }, + "if_none_match": &schema.Schema{ + Type: schema.TypeString, + Optional: true, + Description: "ETag for conditional requests (optional).", + }, + "event": &schema.Schema{ + Type: schema.TypeList, + Computed: true, + Description: "Events.", + Elem: &schema.Resource{ + Schema: map[string]*schema.Schema{ + "action": &schema.Schema{ + Type: schema.TypeString, + Computed: true, + Description: "Type of action for this event.", + }, + "api_source": &schema.Schema{ + Type: schema.TypeString, + Computed: true, + Description: "Source of API when it being executed.", + }, + "event_id": &schema.Schema{ + Type: schema.TypeString, + Computed: true, + Description: "ID of the Activity.", + }, + "level": &schema.Schema{ + Type: schema.TypeString, + Computed: true, + Description: "Level of the event (notice, info, warning, error).", + }, + "message": &schema.Schema{ + Type: schema.TypeString, + Computed: true, + Description: "The (translated) message of the event.", + }, + "message_data": &schema.Schema{ + Type: schema.TypeMap, + Computed: true, + Description: "A flexible schema placeholder to allow any JSON value (aligns with interface{} in Go).", + Elem: &schema.Schema{ + Type: schema.TypeString, + }, + }, + "metadata": &schema.Schema{ + Type: schema.TypeMap, + Computed: true, + Description: "A flexible schema placeholder to allow any JSON value (aligns with interface{} in Go).", + Elem: &schema.Schema{ + Type: schema.TypeString, + }, + }, + "resource": &schema.Schema{ + Type: schema.TypeString, + Computed: true, + Description: "Type of resource for this event.", + }, + "time": &schema.Schema{ + Type: schema.TypeString, + Computed: true, + Description: "Time of activity in ISO 8601 - RFC3339.", + }, + "timestamp": &schema.Schema{ + Type: schema.TypeString, + Computed: true, + Description: "Time of activity in unix epoch.", + }, + "user": &schema.Schema{ + Type: schema.TypeList, + Computed: true, + Description: "Information about a user associated with an event.", + Elem: &schema.Resource{ + Schema: map[string]*schema.Schema{ + "email": &schema.Schema{ + Type: schema.TypeString, + Computed: true, + Description: "Email of the User.", + }, + "name": &schema.Schema{ + Type: schema.TypeString, + Computed: true, + Description: "Name of the User.", + }, + "user_id": &schema.Schema{ + Type: schema.TypeString, + Computed: true, + Description: "ID of user who created/caused the event.", + }, + }, + }, + }, + }, + }, + }, + }, + } +} + +func dataSourceIbmPdrGetEventsRead(context context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { + drAutomationServiceClient, err := meta.(conns.ClientSession).DrAutomationServiceV1() + if err != nil { + tfErr := flex.DiscriminatedTerraformErrorf(err, err.Error(), "(Data) ibm_pdr_get_events", "read", "initialize-client") + log.Printf("[DEBUG]\n%s", tfErr.GetDebugMessage()) + return tfErr.GetDiag() + } + + listEventsOptions := &drautomationservicev1.ListEventsOptions{} + + listEventsOptions.SetProvisionID(d.Get("provision_id").(string)) + if _, ok := d.GetOk("time"); ok { + listEventsOptions.SetTime(d.Get("time").(string)) + } + if _, ok := d.GetOk("from_time"); ok { + listEventsOptions.SetFromTime(d.Get("from_time").(string)) + } + if _, ok := d.GetOk("to_time"); ok { + listEventsOptions.SetToTime(d.Get("to_time").(string)) + } + if _, ok := d.GetOk("accept_language"); ok { + listEventsOptions.SetAcceptLanguage(d.Get("accept_language").(string)) + } + if _, ok := d.GetOk("if_none_match"); ok { + listEventsOptions.SetIfNoneMatch(d.Get("if_none_match").(string)) + } + + eventCollection, _, err := drAutomationServiceClient.ListEventsWithContext(context, listEventsOptions) + if err != nil { + tfErr := flex.TerraformErrorf(err, fmt.Sprintf("ListEventsWithContext failed: %s", err.Error()), "(Data) ibm_pdr_get_events", "read") + log.Printf("[DEBUG]\n%s", tfErr.GetDebugMessage()) + return tfErr.GetDiag() + } + + d.SetId(dataSourceIbmPdrGetEventsID(d)) + + event := []map[string]interface{}{} + for _, eventItem := range eventCollection.Event { + eventItemMap, err := DataSourceIbmPdrGetEventsEventToMap(&eventItem) // #nosec G601 + if err != nil { + return flex.DiscriminatedTerraformErrorf(err, err.Error(), "(Data) ibm_pdr_get_events", "read", "event-to-map").GetDiag() + } + event = append(event, eventItemMap) + } + if err = d.Set("event", event); err != nil { + return flex.DiscriminatedTerraformErrorf(err, fmt.Sprintf("Error setting event: %s", err), "(Data) ibm_pdr_get_events", "read", "set-event").GetDiag() + } + + return nil +} + +// dataSourceIbmPdrGetEventsID returns a reasonable ID for the list. +func dataSourceIbmPdrGetEventsID(d *schema.ResourceData) string { + return time.Now().UTC().String() +} + +func DataSourceIbmPdrGetEventsEventToMap(model *drautomationservicev1.Event) (map[string]interface{}, error) { + modelMap := make(map[string]interface{}) + modelMap["action"] = *model.Action + if model.ApiSource != nil { + modelMap["api_source"] = *model.ApiSource + } + modelMap["event_id"] = *model.EventID + modelMap["level"] = *model.Level + modelMap["message"] = *model.Message + if model.MessageData != nil { + messageData := make(map[string]interface{}) + for k, v := range model.MessageData { + messageData[k] = flex.Stringify(v) + } + modelMap["message_data"] = messageData + } + if model.Metadata != nil { + metadata := make(map[string]interface{}) + for k, v := range model.Metadata { + metadata[k] = flex.Stringify(v) + } + modelMap["metadata"] = metadata + } + modelMap["resource"] = *model.Resource + modelMap["time"] = model.Time.String() + modelMap["timestamp"] = *model.Timestamp + if model.User != nil { + userMap, err := DataSourceIbmPdrGetEventsEventUserToMap(model.User) + if err != nil { + return modelMap, err + } + modelMap["user"] = []map[string]interface{}{userMap} + } + return modelMap, nil +} + +func DataSourceIbmPdrGetEventsEventUserToMap(model *drautomationservicev1.EventUser) (map[string]interface{}, error) { + modelMap := make(map[string]interface{}) + if model.Email != nil { + modelMap["email"] = *model.Email + } + if model.Name != nil { + modelMap["name"] = *model.Name + } + modelMap["user_id"] = *model.UserID + return modelMap, nil +} diff --git a/ibm/service/drautomationservice/data_source_ibm_pdr_get_events_test.go b/ibm/service/drautomationservice/data_source_ibm_pdr_get_events_test.go new file mode 100644 index 0000000000..55e66390d1 --- /dev/null +++ b/ibm/service/drautomationservice/data_source_ibm_pdr_get_events_test.go @@ -0,0 +1,116 @@ +// Copyright IBM Corp. 2025 All Rights Reserved. +// Licensed under the Mozilla Public License v2.0 + +/* + * IBM OpenAPI Terraform Generator Version: 3.105.0-3c13b041-20250605-193116 + */ + +package drautomationservice_test + +import ( + "fmt" + "testing" + + "github.com/hashicorp/terraform-plugin-testing/helper/resource" + + acc "github.com/IBM-Cloud/terraform-provider-ibm/ibm/acctest" + "github.com/IBM-Cloud/terraform-provider-ibm/ibm/service/drautomationservice" + . "github.com/IBM-Cloud/terraform-provider-ibm/ibm/unittest" + "github.com/IBM/go-sdk-core/v5/core" + "github.com/stretchr/testify/assert" + "github.ibm.com/DRAutomation/dra-go-sdk/drautomationservicev1" +) + +func TestAccIbmPdrGetEventsDataSourceBasic(t *testing.T) { + resource.Test(t, resource.TestCase{ + PreCheck: func() { acc.TestAccPreCheck(t) }, + Providers: acc.TestAccProviders, + Steps: []resource.TestStep{ + resource.TestStep{ + Config: testAccCheckIbmPdrGetEventsDataSourceConfigBasic(), + Check: resource.ComposeTestCheckFunc( + resource.TestCheckResourceAttrSet("data.ibm_pdr_get_events.pdr_get_events_instance", "id"), + resource.TestCheckResourceAttrSet("data.ibm_pdr_get_events.pdr_get_events_instance", "provision_id"), + resource.TestCheckResourceAttrSet("data.ibm_pdr_get_events.pdr_get_events_instance", "event.#"), + ), + }, + }, + }) +} + +func testAccCheckIbmPdrGetEventsDataSourceConfigBasic() string { + return fmt.Sprintf(` + data "ibm_pdr_get_events" "pdr_get_events_instance" { + provision_id = "crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::" + time = "2025-06-19T23:59:59Z" + from_time = "2025-06-19T00:00:00Z" + to_time = "2025-06-19T23:59:59Z" + } + `) +} + +func TestDataSourceIbmPdrGetEventsEventToMap(t *testing.T) { + checkResult := func(result map[string]interface{}) { + eventUserModel := make(map[string]interface{}) + eventUserModel["email"] = "abcuser@ibm.com" + eventUserModel["name"] = "abcuser" + eventUserModel["user_id"] = "IBMid-695000abc7E" + + model := make(map[string]interface{}) + model["action"] = "create" + model["api_source"] = "dr-automation-api" + model["event_id"] = "1cecfe43-43cd-4b1b-86be-30c2d3d2a25f" + model["level"] = "info" + model["message"] = "Service Instance created successfully" + model["message_data"] = map[string]interface{}{"anyKey": "anyValue"} + model["metadata"] = map[string]interface{}{"anyKey": "anyValue"} + model["resource"] = "ProvisionID" + model["time"] = "2025-06-23T07:12:49.840Z" + model["timestamp"] = "1750662769" + model["user"] = []map[string]interface{}{eventUserModel} + + assert.Equal(t, result, model) + } + + eventUserModel := new(drautomationservicev1.EventUser) + eventUserModel.Email = core.StringPtr("abcuser@ibm.com") + eventUserModel.Name = core.StringPtr("abcuser") + eventUserModel.UserID = core.StringPtr("IBMid-695000abc7E") + + model := new(drautomationservicev1.Event) + model.Action = core.StringPtr("create") + model.ApiSource = core.StringPtr("dr-automation-api") + model.EventID = core.StringPtr("1cecfe43-43cd-4b1b-86be-30c2d3d2a25f") + model.Level = core.StringPtr("info") + model.Message = core.StringPtr("Service Instance created successfully") + model.MessageData = map[string]interface{}{"anyKey": "anyValue"} + model.Metadata = map[string]interface{}{"anyKey": "anyValue"} + model.Resource = core.StringPtr("ProvisionID") + model.Time = CreateMockDateTime("2025-06-23T07:12:49.840Z") + model.Timestamp = core.StringPtr("1750662769") + model.User = eventUserModel + + result, err := drautomationservice.DataSourceIbmPdrGetEventsEventToMap(model) + assert.Nil(t, err) + checkResult(result) +} + +func TestDataSourceIbmPdrGetEventsEventUserToMap(t *testing.T) { + checkResult := func(result map[string]interface{}) { + model := make(map[string]interface{}) + model["email"] = "abcuser@ibm.com" + model["name"] = "abcuser" + model["user_id"] = "IBMid-695000abc7E" + + assert.Equal(t, result, model) + } + + model := new(drautomationservicev1.EventUser) + model.Email = core.StringPtr("abcuser@ibm.com") + model.Name = core.StringPtr("abcuser") + model.UserID = core.StringPtr("IBMid-695000abc7E") + + result, err := drautomationservice.DataSourceIbmPdrGetEventsEventUserToMap(model) + assert.Nil(t, err) + checkResult(result) +} diff --git a/ibm/service/drautomationservice/data_source_ibm_pdr_get_machine_types.go b/ibm/service/drautomationservice/data_source_ibm_pdr_get_machine_types.go new file mode 100644 index 0000000000..9e27a467f4 --- /dev/null +++ b/ibm/service/drautomationservice/data_source_ibm_pdr_get_machine_types.go @@ -0,0 +1,110 @@ +// Copyright IBM Corp. 2025 All Rights Reserved. +// Licensed under the Mozilla Public License v2.0 + +/* + * IBM OpenAPI Terraform Generator Version: 3.105.0-3c13b041-20250605-193116 +*/ + +package drautomationservice + +import ( + "context" + "fmt" + "log" + "time" + + "github.com/hashicorp/terraform-plugin-sdk/v2/diag" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" + + "github.com/IBM-Cloud/terraform-provider-ibm/ibm/conns" + "github.com/IBM-Cloud/terraform-provider-ibm/ibm/flex" + "github.com/IBM/go-sdk-core/v5/core" + "github.ibm.com/DRAutomation/dra-go-sdk/drautomationservicev1" +) + +func DataSourceIbmPdrGetMachineTypes() *schema.Resource { + return &schema.Resource{ + ReadContext: dataSourceIbmPdrGetMachineTypesRead, + + Schema: map[string]*schema.Schema{ + "instance_id": &schema.Schema{ + Type: schema.TypeString, + Required: true, + Description: "instance id of instance to provision.", + }, + "primary_workspace_name": &schema.Schema{ + Type: schema.TypeString, + Required: true, + Description: "Primary Workspace Name.", + }, + "accept_language": &schema.Schema{ + Type: schema.TypeString, + Optional: true, + Description: "The language requested for the return document.", + }, + "if_none_match": &schema.Schema{ + Type: schema.TypeString, + Optional: true, + Description: "ETag for conditional requests (optional).", + }, + "standby_workspace_name": &schema.Schema{ + Type: schema.TypeString, + Optional: true, + Description: "Standby Workspace Name.", + }, + "workspaces": &schema.Schema{ + Type: schema.TypeMap, + Computed: true, + Description: "Map of workspace IDs to lists of machine types.", + Elem: &schema.Schema{ + Type: schema.TypeString, + }, + }, + }, + } +} + +func dataSourceIbmPdrGetMachineTypesRead(context context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { + drAutomationServiceClient, err := meta.(conns.ClientSession).DrAutomationServiceV1() + if err != nil { + tfErr := flex.DiscriminatedTerraformErrorf(err, err.Error(), "(Data) ibm_pdr_get_machine_types", "read", "initialize-client") + log.Printf("[DEBUG]\n%s", tfErr.GetDebugMessage()) + return tfErr.GetDiag() + } + + getMachineTypeOptions := &drautomationservicev1.GetMachineTypeOptions{} + + getMachineTypeOptions.SetInstanceID(d.Get("instance_id").(string)) + getMachineTypeOptions.SetPrimaryWorkspaceName(d.Get("primary_workspace_name").(string)) + if _, ok := d.GetOk("accept_language"); ok { + getMachineTypeOptions.SetAcceptLanguage(d.Get("accept_language").(string)) + } + if _, ok := d.GetOk("if_none_match"); ok { + getMachineTypeOptions.SetIfNoneMatch(d.Get("if_none_match").(string)) + } + if _, ok := d.GetOk("standby_workspace_name"); ok { + getMachineTypeOptions.SetStandbyWorkspaceName(d.Get("standby_workspace_name").(string)) + } + + machineTypesByWorkspace, _, err := drAutomationServiceClient.GetMachineTypeWithContext(context, getMachineTypeOptions) + if err != nil { + tfErr := flex.TerraformErrorf(err, fmt.Sprintf("GetMachineTypeWithContext failed: %s", err.Error()), "(Data) ibm_pdr_get_machine_types", "read") + log.Printf("[DEBUG]\n%s", tfErr.GetDebugMessage()) + return tfErr.GetDiag() + } + + d.SetId(dataSourceIbmPdrGetMachineTypesID(d)) + + if !core.IsNil(machineTypesByWorkspace.Workspaces) { + if err = d.Set("workspaces", machineTypesByWorkspace.Workspaces); err != nil { + return flex.DiscriminatedTerraformErrorf(err, fmt.Sprintf("Error setting workspaces: %s", err), "(Data) ibm_pdr_get_machine_types", "read", "set-workspaces").GetDiag() + } + } + + return nil +} + +// dataSourceIbmPdrGetMachineTypesID returns a reasonable ID for the list. +func dataSourceIbmPdrGetMachineTypesID(d *schema.ResourceData) string { + return time.Now().UTC().String() +} diff --git a/ibm/service/drautomationservice/data_source_ibm_pdr_get_machine_types_test.go b/ibm/service/drautomationservice/data_source_ibm_pdr_get_machine_types_test.go new file mode 100644 index 0000000000..02b6b88fe7 --- /dev/null +++ b/ibm/service/drautomationservice/data_source_ibm_pdr_get_machine_types_test.go @@ -0,0 +1,44 @@ +// Copyright IBM Corp. 2025 All Rights Reserved. +// Licensed under the Mozilla Public License v2.0 + +/* + * IBM OpenAPI Terraform Generator Version: 3.105.0-3c13b041-20250605-193116 + */ + +package drautomationservice_test + +import ( + "fmt" + "testing" + + "github.com/hashicorp/terraform-plugin-testing/helper/resource" + + acc "github.com/IBM-Cloud/terraform-provider-ibm/ibm/acctest" +) + +func TestAccIbmPdrGetMachineTypesDataSourceBasic(t *testing.T) { + resource.Test(t, resource.TestCase{ + PreCheck: func() { acc.TestAccPreCheck(t) }, + Providers: acc.TestAccProviders, + Steps: []resource.TestStep{ + resource.TestStep{ + Config: testAccCheckIbmPdrGetMachineTypesDataSourceConfigBasic(), + Check: resource.ComposeTestCheckFunc( + resource.TestCheckResourceAttrSet("data.ibm_pdr_get_machine_types.pdr_get_machine_types_instance", "id"), + resource.TestCheckResourceAttrSet("data.ibm_pdr_get_machine_types.pdr_get_machine_types_instance", "instance_id"), + resource.TestCheckResourceAttrSet("data.ibm_pdr_get_machine_types.pdr_get_machine_types_instance", "primary_workspace_name"), + ), + }, + }, + }) +} + +func testAccCheckIbmPdrGetMachineTypesDataSourceConfigBasic() string { + return fmt.Sprintf(` + data "ibm_pdr_get_machine_types" "pdr_get_machine_types_instance" { + instance_id = "crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::" + primary_workspace_name = "Test-workspace-wdc06" + standby_workspace_name = "Test-workspace-wdc07" + } + `) +} diff --git a/ibm/service/drautomationservice/data_source_ibm_pdr_get_managed_vm_list.go b/ibm/service/drautomationservice/data_source_ibm_pdr_get_managed_vm_list.go new file mode 100644 index 0000000000..319eb281ae --- /dev/null +++ b/ibm/service/drautomationservice/data_source_ibm_pdr_get_managed_vm_list.go @@ -0,0 +1,123 @@ +// Copyright IBM Corp. 2025 All Rights Reserved. +// Licensed under the Mozilla Public License v2.0 + +/* + * IBM OpenAPI Terraform Generator Version: 3.105.0-3c13b041-20250605-193116 +*/ + +package drautomationservice + +import ( + "context" + "fmt" + "log" + "time" + + "github.com/hashicorp/terraform-plugin-sdk/v2/diag" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" + + "github.com/IBM-Cloud/terraform-provider-ibm/ibm/conns" + "github.com/IBM-Cloud/terraform-provider-ibm/ibm/flex" + "github.ibm.com/DRAutomation/dra-go-sdk/drautomationservicev1" +) + +func DataSourceIbmPdrGetManagedVmList() *schema.Resource { + return &schema.Resource{ + ReadContext: dataSourceIbmPdrGetManagedVmListRead, + + Schema: map[string]*schema.Schema{ + "instance_id": &schema.Schema{ + Type: schema.TypeString, + Required: true, + Description: "instance id of instance to provision.", + }, + "accept_language": &schema.Schema{ + Type: schema.TypeString, + Optional: true, + Description: "The language requested for the return document.", + }, + "if_none_match": &schema.Schema{ + Type: schema.TypeString, + Optional: true, + Description: "ETag for conditional requests (optional).", + }, + "managed_vms": &schema.Schema{ + Type: schema.TypeList, + Computed: true, + Description: "List of managed VMs associated with the service instance.", + Elem: &schema.Resource{ + Schema: map[string]*schema.Schema{ + "vm_id": &schema.Schema{ + Type: schema.TypeString, + Computed: true, + Description: "Unique identifier of the VM.", + }, + "vm_name": &schema.Schema{ + Type: schema.TypeString, + Computed: true, + Description: "Name of the VM.", + }, + }, + }, + }, + }, + } +} + +func dataSourceIbmPdrGetManagedVmListRead(context context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { + drAutomationServiceClient, err := meta.(conns.ClientSession).DrAutomationServiceV1() + if err != nil { + tfErr := flex.DiscriminatedTerraformErrorf(err, err.Error(), "(Data) ibm_pdr_get_managed_vm_list", "read", "initialize-client") + log.Printf("[DEBUG]\n%s", tfErr.GetDebugMessage()) + return tfErr.GetDiag() + } + + getDrManagedVmOptions := &drautomationservicev1.GetDrManagedVmOptions{} + + getDrManagedVmOptions.SetInstanceID(d.Get("instance_id").(string)) + if _, ok := d.GetOk("accept_language"); ok { + getDrManagedVmOptions.SetAcceptLanguage(d.Get("accept_language").(string)) + } + if _, ok := d.GetOk("if_none_match"); ok { + getDrManagedVmOptions.SetIfNoneMatch(d.Get("if_none_match").(string)) + } + + managedVmListResponse, _, err := drAutomationServiceClient.GetDrManagedVmWithContext(context, getDrManagedVmOptions) + if err != nil { + tfErr := flex.TerraformErrorf(err, fmt.Sprintf("GetDrManagedVmWithContext failed: %s", err.Error()), "(Data) ibm_pdr_get_managed_vm_list", "read") + log.Printf("[DEBUG]\n%s", tfErr.GetDebugMessage()) + return tfErr.GetDiag() + } + + d.SetId(dataSourceIbmPdrGetManagedVmListID(d)) + + managedVms := []map[string]interface{}{} + for _, managedVmsItem := range managedVmListResponse.ManagedVms { + managedVmsItemMap, err := DataSourceIbmPdrGetManagedVmListManagedVmListToMap(&managedVmsItem) // #nosec G601 + if err != nil { + return flex.DiscriminatedTerraformErrorf(err, err.Error(), "(Data) ibm_pdr_get_managed_vm_list", "read", "managed_vms-to-map").GetDiag() + } + managedVms = append(managedVms, managedVmsItemMap) + } + if err = d.Set("managed_vms", managedVms); err != nil { + return flex.DiscriminatedTerraformErrorf(err, fmt.Sprintf("Error setting managed_vms: %s", err), "(Data) ibm_pdr_get_managed_vm_list", "read", "set-managed_vms").GetDiag() + } + + return nil +} + +// dataSourceIbmPdrGetManagedVmListID returns a reasonable ID for the list. +func dataSourceIbmPdrGetManagedVmListID(d *schema.ResourceData) string { + return time.Now().UTC().String() +} + +func DataSourceIbmPdrGetManagedVmListManagedVmListToMap(model *drautomationservicev1.ManagedVmList) (map[string]interface{}, error) { + modelMap := make(map[string]interface{}) + if model.VmID != nil { + modelMap["vm_id"] = *model.VmID + } + if model.VmName != nil { + modelMap["vm_name"] = *model.VmName + } + return modelMap, nil +} diff --git a/ibm/service/drautomationservice/data_source_ibm_pdr_get_managed_vm_list_test.go b/ibm/service/drautomationservice/data_source_ibm_pdr_get_managed_vm_list_test.go new file mode 100644 index 0000000000..a0644e2606 --- /dev/null +++ b/ibm/service/drautomationservice/data_source_ibm_pdr_get_managed_vm_list_test.go @@ -0,0 +1,64 @@ +// Copyright IBM Corp. 2025 All Rights Reserved. +// Licensed under the Mozilla Public License v2.0 + +/* + * IBM OpenAPI Terraform Generator Version: 3.105.0-3c13b041-20250605-193116 + */ + +package drautomationservice_test + +import ( + "fmt" + "testing" + + "github.com/hashicorp/terraform-plugin-testing/helper/resource" + + acc "github.com/IBM-Cloud/terraform-provider-ibm/ibm/acctest" + "github.com/IBM-Cloud/terraform-provider-ibm/ibm/service/drautomationservice" + "github.com/IBM/go-sdk-core/v5/core" + "github.com/stretchr/testify/assert" + "github.ibm.com/DRAutomation/dra-go-sdk/drautomationservicev1" +) + +func TestAccIbmPdrGetManagedVmListDataSourceBasic(t *testing.T) { + resource.Test(t, resource.TestCase{ + PreCheck: func() { acc.TestAccPreCheck(t) }, + Providers: acc.TestAccProviders, + Steps: []resource.TestStep{ + resource.TestStep{ + Config: testAccCheckIbmPdrGetManagedVmListDataSourceConfigBasic(), + Check: resource.ComposeTestCheckFunc( + resource.TestCheckResourceAttrSet("data.ibm_pdr_get_managed_vm_list.pdr_get_managed_vm_list_instance", "id"), + resource.TestCheckResourceAttrSet("data.ibm_pdr_get_managed_vm_list.pdr_get_managed_vm_list_instance", "instance_id"), + resource.TestCheckResourceAttrSet("data.ibm_pdr_get_managed_vm_list.pdr_get_managed_vm_list_instance", "managed_vms.#"), + ), + }, + }, + }) +} + +func testAccCheckIbmPdrGetManagedVmListDataSourceConfigBasic() string { + return fmt.Sprintf(` + data "ibm_pdr_get_managed_vm_list" "pdr_get_managed_vm_list_instance" { + instance_id = "crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::" + } + `) +} + +func TestDataSourceIbmPdrGetManagedVmListManagedVmListToMap(t *testing.T) { + checkResult := func(result map[string]interface{}) { + model := make(map[string]interface{}) + model["vm_id"] = "5f4f7dd3-6d44-4086-9950-933bd550e24d" + model["vm_name"] = "abc-aix-vm1" + + assert.Equal(t, result, model) + } + + model := new(drautomationservicev1.ManagedVmList) + model.VmID = core.StringPtr("5f4f7dd3-6d44-4086-9950-933bd550e24d") + model.VmName = core.StringPtr("abc-aix-vm1") + + result, err := drautomationservice.DataSourceIbmPdrGetManagedVmListManagedVmListToMap(model) + assert.Nil(t, err) + checkResult(result) +} diff --git a/ibm/service/drautomationservice/data_source_ibm_pdr_last_operation.go b/ibm/service/drautomationservice/data_source_ibm_pdr_last_operation.go new file mode 100644 index 0000000000..71f0dffcd1 --- /dev/null +++ b/ibm/service/drautomationservice/data_source_ibm_pdr_last_operation.go @@ -0,0 +1,228 @@ +// Copyright IBM Corp. 2025 All Rights Reserved. +// Licensed under the Mozilla Public License v2.0 + +/* + * IBM OpenAPI Terraform Generator Version: 3.105.0-3c13b041-20250605-193116 +*/ + +package drautomationservice + +import ( + "context" + "fmt" + "log" + "time" + + "github.com/hashicorp/terraform-plugin-sdk/v2/diag" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" + + "github.com/IBM-Cloud/terraform-provider-ibm/ibm/conns" + "github.com/IBM-Cloud/terraform-provider-ibm/ibm/flex" + "github.com/IBM/go-sdk-core/v5/core" + "github.ibm.com/DRAutomation/dra-go-sdk/drautomationservicev1" +) + +func DataSourceIbmPdrLastOperation() *schema.Resource { + return &schema.Resource{ + ReadContext: dataSourceIbmPdrLastOperationRead, + + Schema: map[string]*schema.Schema{ + "instance_id": &schema.Schema{ + Type: schema.TypeString, + Required: true, + Description: "instance id of instance to provision.", + }, + "accept_language": &schema.Schema{ + Type: schema.TypeString, + Optional: true, + Description: "The language requested for the return document.", + }, + "if_none_match": &schema.Schema{ + Type: schema.TypeString, + Optional: true, + Description: "ETag for conditional requests (optional).", + }, + "crn": &schema.Schema{ + Type: schema.TypeString, + Computed: true, + Description: "Cloud Resource Name (CRN) of the service instance.", + }, + "deployment_name": &schema.Schema{ + Type: schema.TypeString, + Computed: true, + Description: "Name of the service instance deployment.", + }, + "is_ksys_ha": &schema.Schema{ + Type: schema.TypeBool, + Computed: true, + Description: "Indicates whether high availability (HA) is enabled for the orchestrator.", + }, + "orch_ext_connectivity_status": &schema.Schema{ + Type: schema.TypeString, + Computed: true, + Description: "Status of standby node addition to the orchestrator cluster.", + }, + "orch_standby_node_addtion_status": &schema.Schema{ + Type: schema.TypeString, + Computed: true, + Description: "Health or informational message about the orchestrator cluster.", + }, + "orchestrator_cluster_message": &schema.Schema{ + Type: schema.TypeString, + Computed: true, + Description: "Current status of the primary orchestrator VM.", + }, + "orchestrator_config_status": &schema.Schema{ + Type: schema.TypeString, + Computed: true, + Description: "Configuration status of the orchestrator cluster.", + }, + "primary_description": &schema.Schema{ + Type: schema.TypeString, + Computed: true, + Description: "Detailed status message for the primary orchestrator VM.", + }, + "primary_ip_address": &schema.Schema{ + Type: schema.TypeString, + Computed: true, + Description: "IP address of the primary orchestrator VM.", + }, + "primary_orchestrator_status": &schema.Schema{ + Type: schema.TypeString, + Computed: true, + Description: "Configuration status of the orchestrator cluster.", + }, + "recovery_location": &schema.Schema{ + Type: schema.TypeString, + Computed: true, + Description: "Disaster recovery location associated with the instance.", + }, + "resource_group": &schema.Schema{ + Type: schema.TypeString, + Computed: true, + Description: "Resource group to which the service instance belongs.", + }, + "standby_description": &schema.Schema{ + Type: schema.TypeString, + Computed: true, + Description: "Detailed status message for the standby orchestrator VM.", + }, + "standby_ip_address": &schema.Schema{ + Type: schema.TypeString, + Computed: true, + Description: "IP address of the standby orchestrator VM.", + }, + "standby_status": &schema.Schema{ + Type: schema.TypeString, + Computed: true, + Description: "Current state of the standby orchestrator VM.", + }, + "status": &schema.Schema{ + Type: schema.TypeString, + Computed: true, + Description: "Overall status of the service instance.", + }, + }, + } +} + +func dataSourceIbmPdrLastOperationRead(context context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { + drAutomationServiceClient, err := meta.(conns.ClientSession).DrAutomationServiceV1() + if err != nil { + tfErr := flex.DiscriminatedTerraformErrorf(err, err.Error(), "(Data) ibm_pdr_last_operation", "read", "initialize-client") + log.Printf("[DEBUG]\n%s", tfErr.GetDebugMessage()) + return tfErr.GetDiag() + } + + getLastOperationOptions := &drautomationservicev1.GetLastOperationOptions{} + + getLastOperationOptions.SetInstanceID(d.Get("instance_id").(string)) + if _, ok := d.GetOk("accept_language"); ok { + getLastOperationOptions.SetAcceptLanguage(d.Get("accept_language").(string)) + } + if _, ok := d.GetOk("if_none_match"); ok { + getLastOperationOptions.SetIfNoneMatch(d.Get("if_none_match").(string)) + } + + serviceInstanceStatus, _, err := drAutomationServiceClient.GetLastOperationWithContext(context, getLastOperationOptions) + if err != nil { + tfErr := flex.TerraformErrorf(err, fmt.Sprintf("GetLastOperationWithContext failed: %s", err.Error()), "(Data) ibm_pdr_last_operation", "read") + log.Printf("[DEBUG]\n%s", tfErr.GetDebugMessage()) + return tfErr.GetDiag() + } + + d.SetId(dataSourceIbmPdrLastOperationID(d)) + + if err = d.Set("crn", serviceInstanceStatus.Crn); err != nil { + return flex.DiscriminatedTerraformErrorf(err, fmt.Sprintf("Error setting crn: %s", err), "(Data) ibm_pdr_last_operation", "read", "set-crn").GetDiag() + } + + if err = d.Set("deployment_name", serviceInstanceStatus.DeploymentName); err != nil { + return flex.DiscriminatedTerraformErrorf(err, fmt.Sprintf("Error setting deployment_name: %s", err), "(Data) ibm_pdr_last_operation", "read", "set-deployment_name").GetDiag() + } + + if err = d.Set("is_ksys_ha", serviceInstanceStatus.IsKsysHa); err != nil { + return flex.DiscriminatedTerraformErrorf(err, fmt.Sprintf("Error setting is_ksys_ha: %s", err), "(Data) ibm_pdr_last_operation", "read", "set-is_ksys_ha").GetDiag() + } + + if !core.IsNil(serviceInstanceStatus.OrchExtConnectivityStatus) { + if err = d.Set("orch_ext_connectivity_status", serviceInstanceStatus.OrchExtConnectivityStatus); err != nil { + return flex.DiscriminatedTerraformErrorf(err, fmt.Sprintf("Error setting orch_ext_connectivity_status: %s", err), "(Data) ibm_pdr_last_operation", "read", "set-orch_ext_connectivity_status").GetDiag() + } + } + + if err = d.Set("orch_standby_node_addtion_status", serviceInstanceStatus.OrchStandbyNodeAddtionStatus); err != nil { + return flex.DiscriminatedTerraformErrorf(err, fmt.Sprintf("Error setting orch_standby_node_addtion_status: %s", err), "(Data) ibm_pdr_last_operation", "read", "set-orch_standby_node_addtion_status").GetDiag() + } + + if err = d.Set("orchestrator_cluster_message", serviceInstanceStatus.OrchestratorClusterMessage); err != nil { + return flex.DiscriminatedTerraformErrorf(err, fmt.Sprintf("Error setting orchestrator_cluster_message: %s", err), "(Data) ibm_pdr_last_operation", "read", "set-orchestrator_cluster_message").GetDiag() + } + + if err = d.Set("orchestrator_config_status", serviceInstanceStatus.OrchestratorConfigStatus); err != nil { + return flex.DiscriminatedTerraformErrorf(err, fmt.Sprintf("Error setting orchestrator_config_status: %s", err), "(Data) ibm_pdr_last_operation", "read", "set-orchestrator_config_status").GetDiag() + } + + if err = d.Set("primary_description", serviceInstanceStatus.PrimaryDescription); err != nil { + return flex.DiscriminatedTerraformErrorf(err, fmt.Sprintf("Error setting primary_description: %s", err), "(Data) ibm_pdr_last_operation", "read", "set-primary_description").GetDiag() + } + + if err = d.Set("primary_ip_address", serviceInstanceStatus.PrimaryIpAddress); err != nil { + return flex.DiscriminatedTerraformErrorf(err, fmt.Sprintf("Error setting primary_ip_address: %s", err), "(Data) ibm_pdr_last_operation", "read", "set-primary_ip_address").GetDiag() + } + + if err = d.Set("primary_orchestrator_status", serviceInstanceStatus.PrimaryOrchestratorStatus); err != nil { + return flex.DiscriminatedTerraformErrorf(err, fmt.Sprintf("Error setting primary_orchestrator_status: %s", err), "(Data) ibm_pdr_last_operation", "read", "set-primary_orchestrator_status").GetDiag() + } + + if err = d.Set("recovery_location", serviceInstanceStatus.RecoveryLocation); err != nil { + return flex.DiscriminatedTerraformErrorf(err, fmt.Sprintf("Error setting recovery_location: %s", err), "(Data) ibm_pdr_last_operation", "read", "set-recovery_location").GetDiag() + } + + if err = d.Set("resource_group", serviceInstanceStatus.ResourceGroup); err != nil { + return flex.DiscriminatedTerraformErrorf(err, fmt.Sprintf("Error setting resource_group: %s", err), "(Data) ibm_pdr_last_operation", "read", "set-resource_group").GetDiag() + } + + if err = d.Set("standby_description", serviceInstanceStatus.StandbyDescription); err != nil { + return flex.DiscriminatedTerraformErrorf(err, fmt.Sprintf("Error setting standby_description: %s", err), "(Data) ibm_pdr_last_operation", "read", "set-standby_description").GetDiag() + } + + if err = d.Set("standby_ip_address", serviceInstanceStatus.StandbyIpAddress); err != nil { + return flex.DiscriminatedTerraformErrorf(err, fmt.Sprintf("Error setting standby_ip_address: %s", err), "(Data) ibm_pdr_last_operation", "read", "set-standby_ip_address").GetDiag() + } + + if err = d.Set("standby_status", serviceInstanceStatus.StandbyStatus); err != nil { + return flex.DiscriminatedTerraformErrorf(err, fmt.Sprintf("Error setting standby_status: %s", err), "(Data) ibm_pdr_last_operation", "read", "set-standby_status").GetDiag() + } + + if err = d.Set("status", serviceInstanceStatus.Status); err != nil { + return flex.DiscriminatedTerraformErrorf(err, fmt.Sprintf("Error setting status: %s", err), "(Data) ibm_pdr_last_operation", "read", "set-status").GetDiag() + } + + return nil +} + +// dataSourceIbmPdrLastOperationID returns a reasonable ID for the list. +func dataSourceIbmPdrLastOperationID(d *schema.ResourceData) string { + return time.Now().UTC().String() +} diff --git a/ibm/service/drautomationservice/data_source_ibm_pdr_last_operation_test.go b/ibm/service/drautomationservice/data_source_ibm_pdr_last_operation_test.go new file mode 100644 index 0000000000..2836ebe6fc --- /dev/null +++ b/ibm/service/drautomationservice/data_source_ibm_pdr_last_operation_test.go @@ -0,0 +1,56 @@ +// Copyright IBM Corp. 2025 All Rights Reserved. +// Licensed under the Mozilla Public License v2.0 + +/* + * IBM OpenAPI Terraform Generator Version: 3.105.0-3c13b041-20250605-193116 + */ + +package drautomationservice_test + +import ( + "fmt" + "testing" + + "github.com/hashicorp/terraform-plugin-testing/helper/resource" + + acc "github.com/IBM-Cloud/terraform-provider-ibm/ibm/acctest" +) + +func TestAccIbmPdrLastOperationDataSourceBasic(t *testing.T) { + resource.Test(t, resource.TestCase{ + PreCheck: func() { acc.TestAccPreCheck(t) }, + Providers: acc.TestAccProviders, + Steps: []resource.TestStep{ + resource.TestStep{ + Config: testAccCheckIbmPdrLastOperationDataSourceConfigBasic(), + Check: resource.ComposeTestCheckFunc( + resource.TestCheckResourceAttrSet("data.ibm_pdr_last_operation.pdr_last_operation_instance", "id"), + resource.TestCheckResourceAttrSet("data.ibm_pdr_last_operation.pdr_last_operation_instance", "instance_id"), + resource.TestCheckResourceAttrSet("data.ibm_pdr_last_operation.pdr_last_operation_instance", "crn"), + resource.TestCheckResourceAttrSet("data.ibm_pdr_last_operation.pdr_last_operation_instance", "deployment_name"), + resource.TestCheckResourceAttrSet("data.ibm_pdr_last_operation.pdr_last_operation_instance", "is_ksys_ha"), + resource.TestCheckResourceAttrSet("data.ibm_pdr_last_operation.pdr_last_operation_instance", "orch_standby_node_addtion_status"), + resource.TestCheckResourceAttrSet("data.ibm_pdr_last_operation.pdr_last_operation_instance", "orchestrator_cluster_message"), + resource.TestCheckResourceAttrSet("data.ibm_pdr_last_operation.pdr_last_operation_instance", "orchestrator_config_status"), + resource.TestCheckResourceAttrSet("data.ibm_pdr_last_operation.pdr_last_operation_instance", "primary_description"), + resource.TestCheckResourceAttrSet("data.ibm_pdr_last_operation.pdr_last_operation_instance", "primary_ip_address"), + resource.TestCheckResourceAttrSet("data.ibm_pdr_last_operation.pdr_last_operation_instance", "primary_orchestrator_status"), + resource.TestCheckResourceAttrSet("data.ibm_pdr_last_operation.pdr_last_operation_instance", "recovery_location"), + resource.TestCheckResourceAttrSet("data.ibm_pdr_last_operation.pdr_last_operation_instance", "resource_group"), + resource.TestCheckResourceAttrSet("data.ibm_pdr_last_operation.pdr_last_operation_instance", "standby_description"), + resource.TestCheckResourceAttrSet("data.ibm_pdr_last_operation.pdr_last_operation_instance", "standby_ip_address"), + resource.TestCheckResourceAttrSet("data.ibm_pdr_last_operation.pdr_last_operation_instance", "standby_status"), + resource.TestCheckResourceAttrSet("data.ibm_pdr_last_operation.pdr_last_operation_instance", "status"), + ), + }, + }, + }) +} + +func testAccCheckIbmPdrLastOperationDataSourceConfigBasic() string { + return fmt.Sprintf(` + data "ibm_pdr_last_operation" "pdr_last_operation_instance" { + instance_id = "crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::" + } + `) +} diff --git a/ibm/service/drautomationservice/data_source_ibm_pdr_schematic_workspaces.go b/ibm/service/drautomationservice/data_source_ibm_pdr_schematic_workspaces.go new file mode 100644 index 0000000000..77ffebb0ab --- /dev/null +++ b/ibm/service/drautomationservice/data_source_ibm_pdr_schematic_workspaces.go @@ -0,0 +1,192 @@ +// Copyright IBM Corp. 2025 All Rights Reserved. +// Licensed under the Mozilla Public License v2.0 + +/* + * IBM OpenAPI Terraform Generator Version: 3.105.0-3c13b041-20250605-193116 +*/ + +package drautomationservice + +import ( + "context" + "fmt" + "log" + "time" + + "github.com/hashicorp/terraform-plugin-sdk/v2/diag" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" + + "github.com/IBM-Cloud/terraform-provider-ibm/ibm/conns" + "github.com/IBM-Cloud/terraform-provider-ibm/ibm/flex" + "github.ibm.com/DRAutomation/dra-go-sdk/drautomationservicev1" +) + +func DataSourceIbmPdrSchematicWorkspaces() *schema.Resource { + return &schema.Resource{ + ReadContext: dataSourceIbmPdrSchematicWorkspacesRead, + + Schema: map[string]*schema.Schema{ + "instance_id": &schema.Schema{ + Type: schema.TypeString, + Required: true, + Description: "instance id of instance to provision.", + }, + "if_none_match": &schema.Schema{ + Type: schema.TypeString, + Optional: true, + Description: "ETag for conditional requests (optional).", + }, + "workspaces": &schema.Schema{ + Type: schema.TypeList, + Computed: true, + Description: "List of Schematics workspaces associated with the DR automation service instance.", + Elem: &schema.Resource{ + Schema: map[string]*schema.Schema{ + "catalog_ref": &schema.Schema{ + Type: schema.TypeList, + Computed: true, + Description: "Reference to a catalog item associated with the DR automation workspace.", + Elem: &schema.Resource{ + Schema: map[string]*schema.Schema{ + "item_name": &schema.Schema{ + Type: schema.TypeString, + Computed: true, + Description: "Name of the catalog item that defines the resource or configuration.", + }, + }, + }, + }, + "created_at": &schema.Schema{ + Type: schema.TypeString, + Computed: true, + Description: "Timestamp when the Schematics workspace was created, in ISO 8601 format (UTC).", + }, + "created_by": &schema.Schema{ + Type: schema.TypeString, + Computed: true, + Description: "CRN of the user or service that created the Schematics workspace.", + }, + "crn": &schema.Schema{ + Type: schema.TypeString, + Computed: true, + Description: "Cloud Resource Name (CRN) of the Schematics workspace.", + }, + "description": &schema.Schema{ + Type: schema.TypeString, + Computed: true, + Description: "Detailed description of the Schematics workspace.", + }, + "id": &schema.Schema{ + Type: schema.TypeString, + Computed: true, + Description: "Unique identifier of the Schematics workspace.", + }, + "location": &schema.Schema{ + Type: schema.TypeString, + Computed: true, + Description: "Region where the Schematics workspace is hosted.", + }, + "name": &schema.Schema{ + Type: schema.TypeString, + Computed: true, + Description: "Human-readable name of the Schematics workspace.", + }, + "status": &schema.Schema{ + Type: schema.TypeString, + Computed: true, + Description: "Current lifecycle status of the Schematics workspace.", + }, + }, + }, + }, + }, + } +} + +func dataSourceIbmPdrSchematicWorkspacesRead(context context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { + drAutomationServiceClient, err := meta.(conns.ClientSession).DrAutomationServiceV1() + if err != nil { + tfErr := flex.DiscriminatedTerraformErrorf(err, err.Error(), "(Data) ibm_pdr_schematic_workspaces", "read", "initialize-client") + log.Printf("[DEBUG]\n%s", tfErr.GetDebugMessage()) + return tfErr.GetDiag() + } + + getSchematicWorkspaceOptions := &drautomationservicev1.GetSchematicWorkspaceOptions{} + + getSchematicWorkspaceOptions.SetInstanceID(d.Get("instance_id").(string)) + if _, ok := d.GetOk("if_none_match"); ok { + getSchematicWorkspaceOptions.SetIfNoneMatch(d.Get("if_none_match").(string)) + } + + schematicWorkspacesResponse, _, err := drAutomationServiceClient.GetSchematicWorkspaceWithContext(context, getSchematicWorkspaceOptions) + if err != nil { + tfErr := flex.TerraformErrorf(err, fmt.Sprintf("GetSchematicWorkspaceWithContext failed: %s", err.Error()), "(Data) ibm_pdr_schematic_workspaces", "read") + log.Printf("[DEBUG]\n%s", tfErr.GetDebugMessage()) + return tfErr.GetDiag() + } + + d.SetId(dataSourceIbmPdrSchematicWorkspacesID(d)) + + workspaces := []map[string]interface{}{} + for _, workspacesItem := range schematicWorkspacesResponse.Workspaces { + workspacesItemMap, err := DataSourceIbmPdrSchematicWorkspacesDrAutomationSchematicsWorkspaceToMap(&workspacesItem) // #nosec G601 + if err != nil { + return flex.DiscriminatedTerraformErrorf(err, err.Error(), "(Data) ibm_pdr_schematic_workspaces", "read", "workspaces-to-map").GetDiag() + } + workspaces = append(workspaces, workspacesItemMap) + } + if err = d.Set("workspaces", workspaces); err != nil { + return flex.DiscriminatedTerraformErrorf(err, fmt.Sprintf("Error setting workspaces: %s", err), "(Data) ibm_pdr_schematic_workspaces", "read", "set-workspaces").GetDiag() + } + + return nil +} + +// dataSourceIbmPdrSchematicWorkspacesID returns a reasonable ID for the list. +func dataSourceIbmPdrSchematicWorkspacesID(d *schema.ResourceData) string { + return time.Now().UTC().String() +} + +func DataSourceIbmPdrSchematicWorkspacesDrAutomationSchematicsWorkspaceToMap(model *drautomationservicev1.DrAutomationSchematicsWorkspace) (map[string]interface{}, error) { + modelMap := make(map[string]interface{}) + if model.CatalogRef != nil { + catalogRefMap, err := DataSourceIbmPdrSchematicWorkspacesDrAutomationCatalogRefToMap(model.CatalogRef) + if err != nil { + return modelMap, err + } + modelMap["catalog_ref"] = []map[string]interface{}{catalogRefMap} + } + if model.CreatedAt != nil { + modelMap["created_at"] = model.CreatedAt.String() + } + if model.CreatedBy != nil { + modelMap["created_by"] = *model.CreatedBy + } + if model.Crn != nil { + modelMap["crn"] = *model.Crn + } + if model.Description != nil { + modelMap["description"] = *model.Description + } + if model.ID != nil { + modelMap["id"] = *model.ID + } + if model.Location != nil { + modelMap["location"] = *model.Location + } + if model.Name != nil { + modelMap["name"] = *model.Name + } + if model.Status != nil { + modelMap["status"] = *model.Status + } + return modelMap, nil +} + +func DataSourceIbmPdrSchematicWorkspacesDrAutomationCatalogRefToMap(model *drautomationservicev1.DrAutomationCatalogRef) (map[string]interface{}, error) { + modelMap := make(map[string]interface{}) + if model.ItemName != nil { + modelMap["item_name"] = *model.ItemName + } + return modelMap, nil +} diff --git a/ibm/service/drautomationservice/data_source_ibm_pdr_schematic_workspaces_test.go b/ibm/service/drautomationservice/data_source_ibm_pdr_schematic_workspaces_test.go new file mode 100644 index 0000000000..39d2e19eda --- /dev/null +++ b/ibm/service/drautomationservice/data_source_ibm_pdr_schematic_workspaces_test.go @@ -0,0 +1,101 @@ +// Copyright IBM Corp. 2025 All Rights Reserved. +// Licensed under the Mozilla Public License v2.0 + +/* + * IBM OpenAPI Terraform Generator Version: 3.105.0-3c13b041-20250605-193116 + */ + +package drautomationservice_test + +import ( + "fmt" + "testing" + + "github.com/hashicorp/terraform-plugin-testing/helper/resource" + + acc "github.com/IBM-Cloud/terraform-provider-ibm/ibm/acctest" + "github.com/IBM-Cloud/terraform-provider-ibm/ibm/service/drautomationservice" + . "github.com/IBM-Cloud/terraform-provider-ibm/ibm/unittest" + "github.com/IBM/go-sdk-core/v5/core" + "github.com/stretchr/testify/assert" + "github.ibm.com/DRAutomation/dra-go-sdk/drautomationservicev1" +) + +func TestAccIbmPdrSchematicWorkspacesDataSourceBasic(t *testing.T) { + resource.Test(t, resource.TestCase{ + PreCheck: func() { acc.TestAccPreCheck(t) }, + Providers: acc.TestAccProviders, + Steps: []resource.TestStep{ + resource.TestStep{ + Config: testAccCheckIbmPdrSchematicWorkspacesDataSourceConfigBasic(), + Check: resource.ComposeTestCheckFunc( + resource.TestCheckResourceAttrSet("data.ibm_pdr_schematic_workspaces.pdr_schematic_workspaces_instance", "id"), + resource.TestCheckResourceAttrSet("data.ibm_pdr_schematic_workspaces.pdr_schematic_workspaces_instance", "instance_id"), + resource.TestCheckResourceAttrSet("data.ibm_pdr_schematic_workspaces.pdr_schematic_workspaces_instance", "workspaces.#"), + ), + }, + }, + }) +} + +func testAccCheckIbmPdrSchematicWorkspacesDataSourceConfigBasic() string { + return fmt.Sprintf(` + data "ibm_pdr_schematic_workspaces" "pdr_schematic_workspaces_instance" { + instance_id = "crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::" + } + `) +} + +func TestDataSourceIbmPdrSchematicWorkspacesDrAutomationSchematicsWorkspaceToMap(t *testing.T) { + checkResult := func(result map[string]interface{}) { + drAutomationCatalogRefModel := make(map[string]interface{}) + drAutomationCatalogRefModel["item_name"] = "Power Virtual Server with VPC landing zone" + + model := make(map[string]interface{}) + model["catalog_ref"] = []map[string]interface{}{drAutomationCatalogRefModel} + model["created_at"] = "2025-02-24T11:18:49.819Z" + model["created_by"] = "crn:v1:bluemix:public:project:eu-gb:a/094f4214c75941f94c2w1g1b001df1fe:fbe45gs9-d3c6-hny3-898d-ff2e6rfes257::" + model["crn"] = "crn:v1:bluemix:public:schematics:eu-de:a/094f42141234567891da601b001df1fe:59389f45-a1d7-085g-8abe-7a28327e5574:workspace:eu-gb.workspace.projects-service.42a7ab33" + model["description"] = "A configuration of the 54f31234-e74f-4567-a0a8-367b45658765 project" + model["id"] = "A configuration of the fbe4a122-d3c6-4543-898d-ff2e6df74123 project" + model["location"] = "us-south" + model["name"] = "testWorkspace" + model["status"] = "testString" + + assert.Equal(t, result, model) + } + + drAutomationCatalogRefModel := new(drautomationservicev1.DrAutomationCatalogRef) + drAutomationCatalogRefModel.ItemName = core.StringPtr("Power Virtual Server with VPC landing zone") + + model := new(drautomationservicev1.DrAutomationSchematicsWorkspace) + model.CatalogRef = drAutomationCatalogRefModel + model.CreatedAt = CreateMockDateTime("2025-02-24T11:18:49.819Z") + model.CreatedBy = core.StringPtr("crn:v1:bluemix:public:project:eu-gb:a/094f4214c75941f94c2w1g1b001df1fe:fbe45gs9-d3c6-hny3-898d-ff2e6rfes257::") + model.Crn = core.StringPtr("crn:v1:bluemix:public:schematics:eu-de:a/094f42141234567891da601b001df1fe:59389f45-a1d7-085g-8abe-7a28327e5574:workspace:eu-gb.workspace.projects-service.42a7ab33") + model.Description = core.StringPtr("A configuration of the 54f31234-e74f-4567-a0a8-367b45658765 project") + model.ID = core.StringPtr("A configuration of the fbe4a122-d3c6-4543-898d-ff2e6df74123 project") + model.Location = core.StringPtr("us-south") + model.Name = core.StringPtr("testWorkspace") + model.Status = core.StringPtr("testString") + + result, err := drautomationservice.DataSourceIbmPdrSchematicWorkspacesDrAutomationSchematicsWorkspaceToMap(model) + assert.Nil(t, err) + checkResult(result) +} + +func TestDataSourceIbmPdrSchematicWorkspacesDrAutomationCatalogRefToMap(t *testing.T) { + checkResult := func(result map[string]interface{}) { + model := make(map[string]interface{}) + model["item_name"] = "Power Virtual Server with VPC landing zone" + + assert.Equal(t, result, model) + } + + model := new(drautomationservicev1.DrAutomationCatalogRef) + model.ItemName = core.StringPtr("Power Virtual Server with VPC landing zone") + + result, err := drautomationservice.DataSourceIbmPdrSchematicWorkspacesDrAutomationCatalogRefToMap(model) + assert.Nil(t, err) + checkResult(result) +} diff --git a/ibm/service/drautomationservice/data_source_ibm_pdr_validate_clustertype.go b/ibm/service/drautomationservice/data_source_ibm_pdr_validate_clustertype.go new file mode 100644 index 0000000000..3d2aed2fb6 --- /dev/null +++ b/ibm/service/drautomationservice/data_source_ibm_pdr_validate_clustertype.go @@ -0,0 +1,110 @@ +// Copyright IBM Corp. 2025 All Rights Reserved. +// Licensed under the Mozilla Public License v2.0 + +/* + * IBM OpenAPI Terraform Generator Version: 3.105.0-3c13b041-20250605-193116 +*/ + +package drautomationservice + +import ( + "context" + "fmt" + "log" + "time" + + "github.com/hashicorp/terraform-plugin-sdk/v2/diag" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" + + "github.com/IBM-Cloud/terraform-provider-ibm/ibm/conns" + "github.com/IBM-Cloud/terraform-provider-ibm/ibm/flex" + "github.com/IBM/go-sdk-core/v5/core" + "github.ibm.com/DRAutomation/dra-go-sdk/drautomationservicev1" +) + +func DataSourceIbmPdrValidateClustertype() *schema.Resource { + return &schema.Resource{ + ReadContext: dataSourceIbmPdrValidateClustertypeRead, + + Schema: map[string]*schema.Schema{ + "instance_id": &schema.Schema{ + Type: schema.TypeString, + Required: true, + Description: "instance id of instance to provision.", + }, + "orchestrator_cluster_type": &schema.Schema{ + Type: schema.TypeString, + Required: true, + Description: "orchestrator cluster type value.", + }, + "accept_language": &schema.Schema{ + Type: schema.TypeString, + Optional: true, + Description: "The language requested for the return document.", + }, + "if_none_match": &schema.Schema{ + Type: schema.TypeString, + Optional: true, + Description: "ETag for conditional requests (optional).", + }, + "description": &schema.Schema{ + Type: schema.TypeString, + Computed: true, + Description: "Human-readable message explaining the cluster type validation result.", + }, + "status": &schema.Schema{ + Type: schema.TypeString, + Computed: true, + Description: "Status of the cluster type validation (for example, valid, invalid, or error).", + }, + }, + } +} + +func dataSourceIbmPdrValidateClustertypeRead(context context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { + drAutomationServiceClient, err := meta.(conns.ClientSession).DrAutomationServiceV1() + if err != nil { + tfErr := flex.DiscriminatedTerraformErrorf(err, err.Error(), "(Data) ibm_pdr_validate_clustertype", "read", "initialize-client") + log.Printf("[DEBUG]\n%s", tfErr.GetDebugMessage()) + return tfErr.GetDiag() + } + + getValidateClusterTypeOptions := &drautomationservicev1.GetValidateClusterTypeOptions{} + + getValidateClusterTypeOptions.SetInstanceID(d.Get("instance_id").(string)) + getValidateClusterTypeOptions.SetOrchestratorClusterType(d.Get("orchestrator_cluster_type").(string)) + if _, ok := d.GetOk("accept_language"); ok { + getValidateClusterTypeOptions.SetAcceptLanguage(d.Get("accept_language").(string)) + } + if _, ok := d.GetOk("if_none_match"); ok { + getValidateClusterTypeOptions.SetIfNoneMatch(d.Get("if_none_match").(string)) + } + + validateClusterTypeResponse, _, err := drAutomationServiceClient.GetValidateClusterTypeWithContext(context, getValidateClusterTypeOptions) + if err != nil { + tfErr := flex.TerraformErrorf(err, fmt.Sprintf("GetValidateClusterTypeWithContext failed: %s", err.Error()), "(Data) ibm_pdr_validate_clustertype", "read") + log.Printf("[DEBUG]\n%s", tfErr.GetDebugMessage()) + return tfErr.GetDiag() + } + + d.SetId(dataSourceIbmPdrValidateClustertypeID(d)) + + if !core.IsNil(validateClusterTypeResponse.Description) { + if err = d.Set("description", validateClusterTypeResponse.Description); err != nil { + return flex.DiscriminatedTerraformErrorf(err, fmt.Sprintf("Error setting description: %s", err), "(Data) ibm_pdr_validate_clustertype", "read", "set-description").GetDiag() + } + } + + if !core.IsNil(validateClusterTypeResponse.Status) { + if err = d.Set("status", validateClusterTypeResponse.Status); err != nil { + return flex.DiscriminatedTerraformErrorf(err, fmt.Sprintf("Error setting status: %s", err), "(Data) ibm_pdr_validate_clustertype", "read", "set-status").GetDiag() + } + } + + return nil +} + +// dataSourceIbmPdrValidateClustertypeID returns a reasonable ID for the list. +func dataSourceIbmPdrValidateClustertypeID(d *schema.ResourceData) string { + return time.Now().UTC().String() +} diff --git a/ibm/service/drautomationservice/data_source_ibm_pdr_validate_clustertype_test.go b/ibm/service/drautomationservice/data_source_ibm_pdr_validate_clustertype_test.go new file mode 100644 index 0000000000..6d01d7dbdc --- /dev/null +++ b/ibm/service/drautomationservice/data_source_ibm_pdr_validate_clustertype_test.go @@ -0,0 +1,43 @@ +// Copyright IBM Corp. 2025 All Rights Reserved. +// Licensed under the Mozilla Public License v2.0 + +/* + * IBM OpenAPI Terraform Generator Version: 3.105.0-3c13b041-20250605-193116 + */ + +package drautomationservice_test + +import ( + "fmt" + "testing" + + "github.com/hashicorp/terraform-plugin-testing/helper/resource" + + acc "github.com/IBM-Cloud/terraform-provider-ibm/ibm/acctest" +) + +func TestAccIbmPdrValidateClustertypeDataSourceBasic(t *testing.T) { + resource.Test(t, resource.TestCase{ + PreCheck: func() { acc.TestAccPreCheck(t) }, + Providers: acc.TestAccProviders, + Steps: []resource.TestStep{ + resource.TestStep{ + Config: testAccCheckIbmPdrValidateClustertypeDataSourceConfigBasic(), + Check: resource.ComposeTestCheckFunc( + resource.TestCheckResourceAttrSet("data.ibm_pdr_validate_clustertype.pdr_validate_clustertype_instance", "id"), + resource.TestCheckResourceAttrSet("data.ibm_pdr_validate_clustertype.pdr_validate_clustertype_instance", "instance_id"), + resource.TestCheckResourceAttrSet("data.ibm_pdr_validate_clustertype.pdr_validate_clustertype_instance", "orchestrator_cluster_type"), + ), + }, + }, + }) +} + +func testAccCheckIbmPdrValidateClustertypeDataSourceConfigBasic() string { + return fmt.Sprintf(` + data "ibm_pdr_validate_clustertype" "pdr_validate_clustertype_instance" { + instance_id = "crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::" + orchestrator_cluster_type = "off-premises" + } + `) +} diff --git a/ibm/service/drautomationservice/data_source_ibm_pdr_validate_proxyip.go b/ibm/service/drautomationservice/data_source_ibm_pdr_validate_proxyip.go new file mode 100644 index 0000000000..102f41df2b --- /dev/null +++ b/ibm/service/drautomationservice/data_source_ibm_pdr_validate_proxyip.go @@ -0,0 +1,125 @@ +// Copyright IBM Corp. 2025 All Rights Reserved. +// Licensed under the Mozilla Public License v2.0 + +/* + * IBM OpenAPI Terraform Generator Version: 3.105.0-3c13b041-20250605-193116 +*/ + +package drautomationservice + +import ( + "context" + "fmt" + "log" + "time" + + "github.com/hashicorp/terraform-plugin-sdk/v2/diag" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" + + "github.com/IBM-Cloud/terraform-provider-ibm/ibm/conns" + "github.com/IBM-Cloud/terraform-provider-ibm/ibm/flex" + "github.com/IBM/go-sdk-core/v5/core" + "github.ibm.com/DRAutomation/dra-go-sdk/drautomationservicev1" +) + +func DataSourceIbmPdrValidateProxyip() *schema.Resource { + return &schema.Resource{ + ReadContext: dataSourceIbmPdrValidateProxyipRead, + + Schema: map[string]*schema.Schema{ + "instance_id": &schema.Schema{ + Type: schema.TypeString, + Required: true, + Description: "instance id of instance to provision.", + }, + "proxyip": &schema.Schema{ + Type: schema.TypeString, + Required: true, + Description: "proxyip value.", + }, + "vpc_location": &schema.Schema{ + Type: schema.TypeString, + Required: true, + Description: "vpc location value.", + }, + "vpc_id": &schema.Schema{ + Type: schema.TypeString, + Required: true, + Description: "vpc id value.", + }, + "if_none_match": &schema.Schema{ + Type: schema.TypeString, + Optional: true, + Description: "ETag for conditional requests (optional).", + }, + "description": &schema.Schema{ + Type: schema.TypeString, + Computed: true, + Description: "Human-readable message explaining the proxy IP validation result.", + }, + "status": &schema.Schema{ + Type: schema.TypeString, + Computed: true, + Description: "Status of the proxy IP validation (for example, valid, invalid, or error).", + }, + "warning": &schema.Schema{ + Type: schema.TypeBool, + Computed: true, + Description: "Indicates whether the proxy IP is valid but has an advisory (e.g., not in reserved IPs).", + }, + }, + } +} + +func dataSourceIbmPdrValidateProxyipRead(context context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { + drAutomationServiceClient, err := meta.(conns.ClientSession).DrAutomationServiceV1() + if err != nil { + tfErr := flex.DiscriminatedTerraformErrorf(err, err.Error(), "(Data) ibm_pdr_validate_proxyip", "read", "initialize-client") + log.Printf("[DEBUG]\n%s", tfErr.GetDebugMessage()) + return tfErr.GetDiag() + } + + getValidateProxyipOptions := &drautomationservicev1.GetValidateProxyipOptions{} + + getValidateProxyipOptions.SetInstanceID(d.Get("instance_id").(string)) + getValidateProxyipOptions.SetProxyip(d.Get("proxyip").(string)) + getValidateProxyipOptions.SetVpcLocation(d.Get("vpc_location").(string)) + getValidateProxyipOptions.SetVpcID(d.Get("vpc_id").(string)) + if _, ok := d.GetOk("if_none_match"); ok { + getValidateProxyipOptions.SetIfNoneMatch(d.Get("if_none_match").(string)) + } + + validateProxyipResponse, _, err := drAutomationServiceClient.GetValidateProxyipWithContext(context, getValidateProxyipOptions) + if err != nil { + tfErr := flex.TerraformErrorf(err, fmt.Sprintf("GetValidateProxyipWithContext failed: %s", err.Error()), "(Data) ibm_pdr_validate_proxyip", "read") + log.Printf("[DEBUG]\n%s", tfErr.GetDebugMessage()) + return tfErr.GetDiag() + } + + d.SetId(dataSourceIbmPdrValidateProxyipID(d)) + + if !core.IsNil(validateProxyipResponse.Description) { + if err = d.Set("description", validateProxyipResponse.Description); err != nil { + return flex.DiscriminatedTerraformErrorf(err, fmt.Sprintf("Error setting description: %s", err), "(Data) ibm_pdr_validate_proxyip", "read", "set-description").GetDiag() + } + } + + if !core.IsNil(validateProxyipResponse.Status) { + if err = d.Set("status", validateProxyipResponse.Status); err != nil { + return flex.DiscriminatedTerraformErrorf(err, fmt.Sprintf("Error setting status: %s", err), "(Data) ibm_pdr_validate_proxyip", "read", "set-status").GetDiag() + } + } + + if !core.IsNil(validateProxyipResponse.Warning) { + if err = d.Set("warning", validateProxyipResponse.Warning); err != nil { + return flex.DiscriminatedTerraformErrorf(err, fmt.Sprintf("Error setting warning: %s", err), "(Data) ibm_pdr_validate_proxyip", "read", "set-warning").GetDiag() + } + } + + return nil +} + +// dataSourceIbmPdrValidateProxyipID returns a reasonable ID for the list. +func dataSourceIbmPdrValidateProxyipID(d *schema.ResourceData) string { + return time.Now().UTC().String() +} diff --git a/ibm/service/drautomationservice/data_source_ibm_pdr_validate_proxyip_test.go b/ibm/service/drautomationservice/data_source_ibm_pdr_validate_proxyip_test.go new file mode 100644 index 0000000000..deb73c070f --- /dev/null +++ b/ibm/service/drautomationservice/data_source_ibm_pdr_validate_proxyip_test.go @@ -0,0 +1,47 @@ +// Copyright IBM Corp. 2025 All Rights Reserved. +// Licensed under the Mozilla Public License v2.0 + +/* + * IBM OpenAPI Terraform Generator Version: 3.105.0-3c13b041-20250605-193116 + */ + +package drautomationservice_test + +import ( + "fmt" + "testing" + + "github.com/hashicorp/terraform-plugin-testing/helper/resource" + + acc "github.com/IBM-Cloud/terraform-provider-ibm/ibm/acctest" +) + +func TestAccIbmPdrValidateProxyipDataSourceBasic(t *testing.T) { + resource.Test(t, resource.TestCase{ + PreCheck: func() { acc.TestAccPreCheck(t) }, + Providers: acc.TestAccProviders, + Steps: []resource.TestStep{ + resource.TestStep{ + Config: testAccCheckIbmPdrValidateProxyipDataSourceConfigBasic(), + Check: resource.ComposeTestCheckFunc( + resource.TestCheckResourceAttrSet("data.ibm_pdr_validate_proxyip.pdr_validate_proxyip_instance", "id"), + resource.TestCheckResourceAttrSet("data.ibm_pdr_validate_proxyip.pdr_validate_proxyip_instance", "instance_id"), + resource.TestCheckResourceAttrSet("data.ibm_pdr_validate_proxyip.pdr_validate_proxyip_instance", "proxyip"), + resource.TestCheckResourceAttrSet("data.ibm_pdr_validate_proxyip.pdr_validate_proxyip_instance", "vpc_location"), + resource.TestCheckResourceAttrSet("data.ibm_pdr_validate_proxyip.pdr_validate_proxyip_instance", "vpc_id"), + ), + }, + }, + }) +} + +func testAccCheckIbmPdrValidateProxyipDataSourceConfigBasic() string { + return fmt.Sprintf(` + data "ibm_pdr_validate_proxyip" "pdr_validate_proxyip_instance" { + instance_id = "crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::" + proxyip = "10.30.40.5:3128" + vpc_location = "us-south" + vpc_id = "r006-2f3b3ab9-2149-49cc-83a1-30a5d93d59b2" + } + `) +} diff --git a/ibm/service/drautomationservice/data_source_ibm_pdr_validate_workspace.go b/ibm/service/drautomationservice/data_source_ibm_pdr_validate_workspace.go new file mode 100644 index 0000000000..a071c2c0b5 --- /dev/null +++ b/ibm/service/drautomationservice/data_source_ibm_pdr_validate_workspace.go @@ -0,0 +1,114 @@ +// Copyright IBM Corp. 2025 All Rights Reserved. +// Licensed under the Mozilla Public License v2.0 + +/* + * IBM OpenAPI Terraform Generator Version: 3.105.0-3c13b041-20250605-193116 +*/ + +package drautomationservice + +import ( + "context" + "fmt" + "log" + "time" + + "github.com/hashicorp/terraform-plugin-sdk/v2/diag" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" + + "github.com/IBM-Cloud/terraform-provider-ibm/ibm/conns" + "github.com/IBM-Cloud/terraform-provider-ibm/ibm/flex" + "github.com/IBM/go-sdk-core/v5/core" + "github.ibm.com/DRAutomation/dra-go-sdk/drautomationservicev1" +) + +func DataSourceIbmPdrValidateWorkspace() *schema.Resource { + return &schema.Resource{ + ReadContext: dataSourceIbmPdrValidateWorkspaceRead, + + Schema: map[string]*schema.Schema{ + "instance_id": &schema.Schema{ + Type: schema.TypeString, + Required: true, + Description: "instance id of instance to provision.", + }, + "workspace_id": &schema.Schema{ + Type: schema.TypeString, + Required: true, + Description: "standBy workspaceID value.", + }, + "crn": &schema.Schema{ + Type: schema.TypeString, + Required: true, + Description: "crn value.", + }, + "location_url": &schema.Schema{ + Type: schema.TypeString, + Required: true, + Description: "schematic_workspace_id value.", + }, + "if_none_match": &schema.Schema{ + Type: schema.TypeString, + Optional: true, + Description: "ETag for conditional requests (optional).", + }, + "description": &schema.Schema{ + Type: schema.TypeString, + Computed: true, + Description: "Human-readable message describing the validation result.", + }, + "status": &schema.Schema{ + Type: schema.TypeString, + Computed: true, + Description: "Status of the workspace validation (for example, Valid, Invalid, or Pending).", + }, + }, + } +} + +func dataSourceIbmPdrValidateWorkspaceRead(context context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { + drAutomationServiceClient, err := meta.(conns.ClientSession).DrAutomationServiceV1() + if err != nil { + tfErr := flex.DiscriminatedTerraformErrorf(err, err.Error(), "(Data) ibm_pdr_validate_workspace", "read", "initialize-client") + log.Printf("[DEBUG]\n%s", tfErr.GetDebugMessage()) + return tfErr.GetDiag() + } + + getValidatePowerVsWorkspaceOptions := &drautomationservicev1.GetValidatePowerVsWorkspaceOptions{} + + getValidatePowerVsWorkspaceOptions.SetInstanceID(d.Get("instance_id").(string)) + getValidatePowerVsWorkspaceOptions.SetWorkspaceID(d.Get("workspace_id").(string)) + getValidatePowerVsWorkspaceOptions.SetCrn(d.Get("crn").(string)) + getValidatePowerVsWorkspaceOptions.SetLocationURL(d.Get("location_url").(string)) + if _, ok := d.GetOk("if_none_match"); ok { + getValidatePowerVsWorkspaceOptions.SetIfNoneMatch(d.Get("if_none_match").(string)) + } + + validateWorkspaceResponse, _, err := drAutomationServiceClient.GetValidatePowerVsWorkspaceWithContext(context, getValidatePowerVsWorkspaceOptions) + if err != nil { + tfErr := flex.TerraformErrorf(err, fmt.Sprintf("GetValidatePowerVsWorkspaceWithContext failed: %s", err.Error()), "(Data) ibm_pdr_validate_workspace", "read") + log.Printf("[DEBUG]\n%s", tfErr.GetDebugMessage()) + return tfErr.GetDiag() + } + + d.SetId(dataSourceIbmPdrValidateWorkspaceID(d)) + + if !core.IsNil(validateWorkspaceResponse.Description) { + if err = d.Set("description", validateWorkspaceResponse.Description); err != nil { + return flex.DiscriminatedTerraformErrorf(err, fmt.Sprintf("Error setting description: %s", err), "(Data) ibm_pdr_validate_workspace", "read", "set-description").GetDiag() + } + } + + if !core.IsNil(validateWorkspaceResponse.Status) { + if err = d.Set("status", validateWorkspaceResponse.Status); err != nil { + return flex.DiscriminatedTerraformErrorf(err, fmt.Sprintf("Error setting status: %s", err), "(Data) ibm_pdr_validate_workspace", "read", "set-status").GetDiag() + } + } + + return nil +} + +// dataSourceIbmPdrValidateWorkspaceID returns a reasonable ID for the list. +func dataSourceIbmPdrValidateWorkspaceID(d *schema.ResourceData) string { + return time.Now().UTC().String() +} diff --git a/ibm/service/drautomationservice/data_source_ibm_pdr_validate_workspace_test.go b/ibm/service/drautomationservice/data_source_ibm_pdr_validate_workspace_test.go new file mode 100644 index 0000000000..f5dd62ebaf --- /dev/null +++ b/ibm/service/drautomationservice/data_source_ibm_pdr_validate_workspace_test.go @@ -0,0 +1,47 @@ +// Copyright IBM Corp. 2025 All Rights Reserved. +// Licensed under the Mozilla Public License v2.0 + +/* + * IBM OpenAPI Terraform Generator Version: 3.105.0-3c13b041-20250605-193116 + */ + +package drautomationservice_test + +import ( + "fmt" + "testing" + + "github.com/hashicorp/terraform-plugin-testing/helper/resource" + + acc "github.com/IBM-Cloud/terraform-provider-ibm/ibm/acctest" +) + +func TestAccIbmPdrValidateWorkspaceDataSourceBasic(t *testing.T) { + resource.Test(t, resource.TestCase{ + PreCheck: func() { acc.TestAccPreCheck(t) }, + Providers: acc.TestAccProviders, + Steps: []resource.TestStep{ + resource.TestStep{ + Config: testAccCheckIbmPdrValidateWorkspaceDataSourceConfigBasic(), + Check: resource.ComposeTestCheckFunc( + resource.TestCheckResourceAttrSet("data.ibm_pdr_validate_workspace.pdr_validate_workspace_instance", "id"), + resource.TestCheckResourceAttrSet("data.ibm_pdr_validate_workspace.pdr_validate_workspace_instance", "instance_id"), + resource.TestCheckResourceAttrSet("data.ibm_pdr_validate_workspace.pdr_validate_workspace_instance", "workspace_id"), + resource.TestCheckResourceAttrSet("data.ibm_pdr_validate_workspace.pdr_validate_workspace_instance", "crn"), + resource.TestCheckResourceAttrSet("data.ibm_pdr_validate_workspace.pdr_validate_workspace_instance", "location_url"), + ), + }, + }, + }) +} + +func testAccCheckIbmPdrValidateWorkspaceDataSourceConfigBasic() string { + return fmt.Sprintf(` + data "ibm_pdr_validate_workspace" "pdr_validate_workspace_instance" { + instance_id = "crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::" + workspace_id = "75cbf05b-78f6-406e-afe7-a904f646d798" + crn = "crn:v1:bluemix:public:power-iaas:dal10:a/094f4214c75941f991da601b001df1fe:75cbf05b-78f6-406e-afe7-a904f646d798::" + location_url = "https://us-south.power-iaas.cloud.ibm.com" + } + `) +} diff --git a/ibm/service/drautomationservice/data_source_ibm_pdr_workspace_custom_vpc.go b/ibm/service/drautomationservice/data_source_ibm_pdr_workspace_custom_vpc.go new file mode 100644 index 0000000000..debc224bbd --- /dev/null +++ b/ibm/service/drautomationservice/data_source_ibm_pdr_workspace_custom_vpc.go @@ -0,0 +1,325 @@ +// Copyright IBM Corp. 2025 All Rights Reserved. +// Licensed under the Mozilla Public License v2.0 + +/* + * IBM OpenAPI Terraform Generator Version: 3.105.0-3c13b041-20250605-193116 +*/ + +package drautomationservice + +import ( + "context" + "fmt" + "log" + "time" + + "github.com/hashicorp/terraform-plugin-sdk/v2/diag" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" + + "github.com/IBM-Cloud/terraform-provider-ibm/ibm/conns" + "github.com/IBM-Cloud/terraform-provider-ibm/ibm/flex" + "github.ibm.com/DRAutomation/dra-go-sdk/drautomationservicev1" +) + +func DataSourceIbmPdrWorkspaceCustomVpc() *schema.Resource { + return &schema.Resource{ + ReadContext: dataSourceIbmPdrWorkspaceCustomVpcRead, + + Schema: map[string]*schema.Schema{ + "instance_id": &schema.Schema{ + Type: schema.TypeString, + Required: true, + Description: "instance id of instance to provision.", + }, + "location_id": &schema.Schema{ + Type: schema.TypeString, + Required: true, + Description: "Location ID value.", + }, + "vpc_id": &schema.Schema{ + Type: schema.TypeString, + Required: true, + Description: "vpc id value.", + }, + "tg_id": &schema.Schema{ + Type: schema.TypeString, + Required: true, + Description: "transit gateway id value.", + }, + "if_none_match": &schema.Schema{ + Type: schema.TypeString, + Optional: true, + Description: "ETag for conditional requests (optional).", + }, + "dr_standby_workspaces": &schema.Schema{ + Type: schema.TypeList, + Computed: true, + Description: "List of standby disaster recovery workspaces.", + Elem: &schema.Resource{ + Schema: map[string]*schema.Schema{ + "details": &schema.Schema{ + Type: schema.TypeList, + Computed: true, + Description: "Detailed information of the standby DR workspace.", + Elem: &schema.Resource{ + Schema: map[string]*schema.Schema{ + "crn": &schema.Schema{ + Type: schema.TypeString, + Computed: true, + Description: "Cloud Resource Name (CRN) of the DR workspace.", + }, + }, + }, + }, + "id": &schema.Schema{ + Type: schema.TypeString, + Computed: true, + Description: "Unique identifier of the standby workspace.", + }, + "location": &schema.Schema{ + Type: schema.TypeList, + Computed: true, + Description: "Location information of the standby workspace.", + Elem: &schema.Resource{ + Schema: map[string]*schema.Schema{ + "region": &schema.Schema{ + Type: schema.TypeString, + Computed: true, + Description: "The region identifier of the DR location.", + }, + "type": &schema.Schema{ + Type: schema.TypeString, + Computed: true, + Description: "The type of location (e.g., data-center, cloud-region).", + }, + "url": &schema.Schema{ + Type: schema.TypeString, + Computed: true, + Description: "The URL endpoint to access the DR location.", + }, + }, + }, + }, + "name": &schema.Schema{ + Type: schema.TypeString, + Computed: true, + Description: "Name of the standby workspace.", + }, + "status": &schema.Schema{ + Type: schema.TypeString, + Computed: true, + Description: "Current status of the standby workspace.", + }, + }, + }, + }, + "dr_workspaces": &schema.Schema{ + Type: schema.TypeList, + Computed: true, + Description: "List of primary disaster recovery workspaces.", + Elem: &schema.Resource{ + Schema: map[string]*schema.Schema{ + "default": &schema.Schema{ + Type: schema.TypeBool, + Computed: true, + Description: "Indicates if this is the default DR workspace.", + }, + "details": &schema.Schema{ + Type: schema.TypeList, + Computed: true, + Description: "Detailed information about the DR workspace.", + Elem: &schema.Resource{ + Schema: map[string]*schema.Schema{ + "crn": &schema.Schema{ + Type: schema.TypeString, + Computed: true, + Description: "Cloud Resource Name (CRN) of the DR workspace.", + }, + }, + }, + }, + "id": &schema.Schema{ + Type: schema.TypeString, + Computed: true, + Description: "Unique identifier of the DR workspace.", + }, + "location": &schema.Schema{ + Type: schema.TypeList, + Computed: true, + Description: "Location information of the DR workspace.", + Elem: &schema.Resource{ + Schema: map[string]*schema.Schema{ + "region": &schema.Schema{ + Type: schema.TypeString, + Computed: true, + Description: "The region identifier of the DR location.", + }, + "type": &schema.Schema{ + Type: schema.TypeString, + Computed: true, + Description: "The type of location (e.g., data-center, cloud-region).", + }, + "url": &schema.Schema{ + Type: schema.TypeString, + Computed: true, + Description: "The URL endpoint to access the DR location.", + }, + }, + }, + }, + "name": &schema.Schema{ + Type: schema.TypeString, + Computed: true, + Description: "Name of the DR workspace.", + }, + "status": &schema.Schema{ + Type: schema.TypeString, + Computed: true, + Description: "Current status of the DR workspace.", + }, + }, + }, + }, + }, + } +} + +func dataSourceIbmPdrWorkspaceCustomVpcRead(context context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { + drAutomationServiceClient, err := meta.(conns.ClientSession).DrAutomationServiceV1() + if err != nil { + tfErr := flex.DiscriminatedTerraformErrorf(err, err.Error(), "(Data) ibm_pdr_workspace_custom_vpc", "read", "initialize-client") + log.Printf("[DEBUG]\n%s", tfErr.GetDebugMessage()) + return tfErr.GetDiag() + } + + getPvsworkspacesCustomVpcOptions := &drautomationservicev1.GetPvsworkspacesCustomVpcOptions{} + + getPvsworkspacesCustomVpcOptions.SetInstanceID(d.Get("instance_id").(string)) + getPvsworkspacesCustomVpcOptions.SetLocationID(d.Get("location_id").(string)) + getPvsworkspacesCustomVpcOptions.SetVpcID(d.Get("vpc_id").(string)) + getPvsworkspacesCustomVpcOptions.SetTgID(d.Get("tg_id").(string)) + if _, ok := d.GetOk("if_none_match"); ok { + getPvsworkspacesCustomVpcOptions.SetIfNoneMatch(d.Get("if_none_match").(string)) + } + + drDataCustomVPC, _, err := drAutomationServiceClient.GetPvsworkspacesCustomVpcWithContext(context, getPvsworkspacesCustomVpcOptions) + if err != nil { + tfErr := flex.TerraformErrorf(err, fmt.Sprintf("GetPvsworkspacesCustomVpcWithContext failed: %s", err.Error()), "(Data) ibm_pdr_workspace_custom_vpc", "read") + log.Printf("[DEBUG]\n%s", tfErr.GetDebugMessage()) + return tfErr.GetDiag() + } + + d.SetId(dataSourceIbmPdrWorkspaceCustomVpcID(d)) + + drStandbyWorkspaces := []map[string]interface{}{} + for _, drStandbyWorkspacesItem := range drDataCustomVPC.DrStandbyWorkspaces { + drStandbyWorkspacesItemMap, err := DataSourceIbmPdrWorkspaceCustomVpcDRStandbyWorkspaceToMap(&drStandbyWorkspacesItem) // #nosec G601 + if err != nil { + return flex.DiscriminatedTerraformErrorf(err, err.Error(), "(Data) ibm_pdr_workspace_custom_vpc", "read", "dr_standby_workspaces-to-map").GetDiag() + } + drStandbyWorkspaces = append(drStandbyWorkspaces, drStandbyWorkspacesItemMap) + } + if err = d.Set("dr_standby_workspaces", drStandbyWorkspaces); err != nil { + return flex.DiscriminatedTerraformErrorf(err, fmt.Sprintf("Error setting dr_standby_workspaces: %s", err), "(Data) ibm_pdr_workspace_custom_vpc", "read", "set-dr_standby_workspaces").GetDiag() + } + + drWorkspaces := []map[string]interface{}{} + for _, drWorkspacesItem := range drDataCustomVPC.DrWorkspaces { + drWorkspacesItemMap, err := DataSourceIbmPdrWorkspaceCustomVpcDRWorkspaceToMap(&drWorkspacesItem) // #nosec G601 + if err != nil { + return flex.DiscriminatedTerraformErrorf(err, err.Error(), "(Data) ibm_pdr_workspace_custom_vpc", "read", "dr_workspaces-to-map").GetDiag() + } + drWorkspaces = append(drWorkspaces, drWorkspacesItemMap) + } + if err = d.Set("dr_workspaces", drWorkspaces); err != nil { + return flex.DiscriminatedTerraformErrorf(err, fmt.Sprintf("Error setting dr_workspaces: %s", err), "(Data) ibm_pdr_workspace_custom_vpc", "read", "set-dr_workspaces").GetDiag() + } + + return nil +} + +// dataSourceIbmPdrWorkspaceCustomVpcID returns a reasonable ID for the list. +func dataSourceIbmPdrWorkspaceCustomVpcID(d *schema.ResourceData) string { + return time.Now().UTC().String() +} + +func DataSourceIbmPdrWorkspaceCustomVpcDRStandbyWorkspaceToMap(model *drautomationservicev1.DRStandbyWorkspace) (map[string]interface{}, error) { + modelMap := make(map[string]interface{}) + if model.Details != nil { + detailsMap, err := DataSourceIbmPdrWorkspaceCustomVpcDetailsDrToMap(model.Details) + if err != nil { + return modelMap, err + } + modelMap["details"] = []map[string]interface{}{detailsMap} + } + if model.ID != nil { + modelMap["id"] = *model.ID + } + if model.Location != nil { + locationMap, err := DataSourceIbmPdrWorkspaceCustomVpcLocationDrToMap(model.Location) + if err != nil { + return modelMap, err + } + modelMap["location"] = []map[string]interface{}{locationMap} + } + if model.Name != nil { + modelMap["name"] = *model.Name + } + if model.Status != nil { + modelMap["status"] = *model.Status + } + return modelMap, nil +} + +func DataSourceIbmPdrWorkspaceCustomVpcDetailsDrToMap(model *drautomationservicev1.DetailsDr) (map[string]interface{}, error) { + modelMap := make(map[string]interface{}) + if model.Crn != nil { + modelMap["crn"] = *model.Crn + } + return modelMap, nil +} + +func DataSourceIbmPdrWorkspaceCustomVpcLocationDrToMap(model *drautomationservicev1.LocationDr) (map[string]interface{}, error) { + modelMap := make(map[string]interface{}) + if model.Region != nil { + modelMap["region"] = *model.Region + } + if model.Type != nil { + modelMap["type"] = *model.Type + } + if model.URL != nil { + modelMap["url"] = *model.URL + } + return modelMap, nil +} + +func DataSourceIbmPdrWorkspaceCustomVpcDRWorkspaceToMap(model *drautomationservicev1.DRWorkspace) (map[string]interface{}, error) { + modelMap := make(map[string]interface{}) + if model.Default != nil { + modelMap["default"] = *model.Default + } + if model.Details != nil { + detailsMap, err := DataSourceIbmPdrWorkspaceCustomVpcDetailsDrToMap(model.Details) + if err != nil { + return modelMap, err + } + modelMap["details"] = []map[string]interface{}{detailsMap} + } + if model.ID != nil { + modelMap["id"] = *model.ID + } + if model.Location != nil { + locationMap, err := DataSourceIbmPdrWorkspaceCustomVpcLocationDrToMap(model.Location) + if err != nil { + return modelMap, err + } + modelMap["location"] = []map[string]interface{}{locationMap} + } + if model.Name != nil { + modelMap["name"] = *model.Name + } + if model.Status != nil { + modelMap["status"] = *model.Status + } + return modelMap, nil +} diff --git a/ibm/service/drautomationservice/data_source_ibm_pdr_workspace_custom_vpc_test.go b/ibm/service/drautomationservice/data_source_ibm_pdr_workspace_custom_vpc_test.go new file mode 100644 index 0000000000..75262bbde8 --- /dev/null +++ b/ibm/service/drautomationservice/data_source_ibm_pdr_workspace_custom_vpc_test.go @@ -0,0 +1,171 @@ +// Copyright IBM Corp. 2025 All Rights Reserved. +// Licensed under the Mozilla Public License v2.0 + +/* + * IBM OpenAPI Terraform Generator Version: 3.105.0-3c13b041-20250605-193116 + */ + +package drautomationservice_test + +import ( + "fmt" + "testing" + + "github.com/hashicorp/terraform-plugin-testing/helper/resource" + + acc "github.com/IBM-Cloud/terraform-provider-ibm/ibm/acctest" + "github.com/IBM-Cloud/terraform-provider-ibm/ibm/service/drautomationservice" + "github.com/IBM/go-sdk-core/v5/core" + "github.com/stretchr/testify/assert" + "github.ibm.com/DRAutomation/dra-go-sdk/drautomationservicev1" +) + +func TestAccIbmPdrWorkspaceCustomVpcDataSourceBasic(t *testing.T) { + resource.Test(t, resource.TestCase{ + PreCheck: func() { acc.TestAccPreCheck(t) }, + Providers: acc.TestAccProviders, + Steps: []resource.TestStep{ + resource.TestStep{ + Config: testAccCheckIbmPdrWorkspaceCustomVpcDataSourceConfigBasic(), + Check: resource.ComposeTestCheckFunc( + resource.TestCheckResourceAttrSet("data.ibm_pdr_workspace_custom_vpc.pdr_workspace_custom_vpc_instance", "id"), + resource.TestCheckResourceAttrSet("data.ibm_pdr_workspace_custom_vpc.pdr_workspace_custom_vpc_instance", "instance_id"), + resource.TestCheckResourceAttrSet("data.ibm_pdr_workspace_custom_vpc.pdr_workspace_custom_vpc_instance", "location_id"), + resource.TestCheckResourceAttrSet("data.ibm_pdr_workspace_custom_vpc.pdr_workspace_custom_vpc_instance", "vpc_id"), + resource.TestCheckResourceAttrSet("data.ibm_pdr_workspace_custom_vpc.pdr_workspace_custom_vpc_instance", "tg_id"), + resource.TestCheckResourceAttrSet("data.ibm_pdr_workspace_custom_vpc.pdr_workspace_custom_vpc_instance", "dr_standby_workspaces.#"), + resource.TestCheckResourceAttrSet("data.ibm_pdr_workspace_custom_vpc.pdr_workspace_custom_vpc_instance", "dr_workspaces.#"), + ), + }, + }, + }) +} + +func testAccCheckIbmPdrWorkspaceCustomVpcDataSourceConfigBasic() string { + return fmt.Sprintf(` + data "ibm_pdr_workspace_custom_vpc" "pdr_workspace_custom_vpc_instance" { + instance_id = "crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::" + location_id = "lon06" + vpc_id = "r006-2f3b3ab9-2149-49cc-83a1-30a5d93d59b2" + tg_id = "024fcff9-c676-46e4-ad42-3b2d349c9f8f" + } + `) +} + +func TestDataSourceIbmPdrWorkspaceCustomVpcDRStandbyWorkspaceToMap(t *testing.T) { + checkResult := func(result map[string]interface{}) { + detailsDrModel := make(map[string]interface{}) + detailsDrModel["crn"] = "crn:v1:bluemix:public:power-iaas:lon06:a/094f4214c75941f991da601b001df1fe:b6297e60-d0fe-4e24-8b15-276cf0645737::" + + locationDrModel := make(map[string]interface{}) + locationDrModel["region"] = "lon06" + locationDrModel["type"] = "data-center" + locationDrModel["url"] = "https://lon.power-iaas.cloud.ibm.com" + + model := make(map[string]interface{}) + model["details"] = []map[string]interface{}{detailsDrModel} + model["id"] = "testString" + model["location"] = []map[string]interface{}{locationDrModel} + model["name"] = "testString" + model["status"] = "testString" + + assert.Equal(t, result, model) + } + + detailsDrModel := new(drautomationservicev1.DetailsDr) + detailsDrModel.Crn = core.StringPtr("crn:v1:bluemix:public:power-iaas:lon06:a/094f4214c75941f991da601b001df1fe:b6297e60-d0fe-4e24-8b15-276cf0645737::") + + locationDrModel := new(drautomationservicev1.LocationDr) + locationDrModel.Region = core.StringPtr("lon06") + locationDrModel.Type = core.StringPtr("data-center") + locationDrModel.URL = core.StringPtr("https://lon.power-iaas.cloud.ibm.com") + + model := new(drautomationservicev1.DRStandbyWorkspace) + model.Details = detailsDrModel + model.ID = core.StringPtr("testString") + model.Location = locationDrModel + model.Name = core.StringPtr("testString") + model.Status = core.StringPtr("testString") + + result, err := drautomationservice.DataSourceIbmPdrWorkspaceCustomVpcDRStandbyWorkspaceToMap(model) + assert.Nil(t, err) + checkResult(result) +} + +func TestDataSourceIbmPdrWorkspaceCustomVpcDetailsDrToMap(t *testing.T) { + checkResult := func(result map[string]interface{}) { + model := make(map[string]interface{}) + model["crn"] = "crn:v1:bluemix:public:power-iaas:lon06:a/094f4214c75941f991da601b001df1fe:b6297e60-d0fe-4e24-8b15-276cf0645737::" + + assert.Equal(t, result, model) + } + + model := new(drautomationservicev1.DetailsDr) + model.Crn = core.StringPtr("crn:v1:bluemix:public:power-iaas:lon06:a/094f4214c75941f991da601b001df1fe:b6297e60-d0fe-4e24-8b15-276cf0645737::") + + result, err := drautomationservice.DataSourceIbmPdrWorkspaceCustomVpcDetailsDrToMap(model) + assert.Nil(t, err) + checkResult(result) +} + +func TestDataSourceIbmPdrWorkspaceCustomVpcLocationDrToMap(t *testing.T) { + checkResult := func(result map[string]interface{}) { + model := make(map[string]interface{}) + model["region"] = "lon06" + model["type"] = "data-center" + model["url"] = "https://lon.power-iaas.cloud.ibm.com" + + assert.Equal(t, result, model) + } + + model := new(drautomationservicev1.LocationDr) + model.Region = core.StringPtr("lon06") + model.Type = core.StringPtr("data-center") + model.URL = core.StringPtr("https://lon.power-iaas.cloud.ibm.com") + + result, err := drautomationservice.DataSourceIbmPdrWorkspaceCustomVpcLocationDrToMap(model) + assert.Nil(t, err) + checkResult(result) +} + +func TestDataSourceIbmPdrWorkspaceCustomVpcDRWorkspaceToMap(t *testing.T) { + checkResult := func(result map[string]interface{}) { + detailsDrModel := make(map[string]interface{}) + detailsDrModel["crn"] = "crn:v1:bluemix:public:power-iaas:lon06:a/094f4214c75941f991da601b001df1fe:b6297e60-d0fe-4e24-8b15-276cf0645737::" + + locationDrModel := make(map[string]interface{}) + locationDrModel["region"] = "lon06" + locationDrModel["type"] = "data-center" + locationDrModel["url"] = "https://lon.power-iaas.cloud.ibm.com" + + model := make(map[string]interface{}) + model["default"] = true + model["details"] = []map[string]interface{}{detailsDrModel} + model["id"] = "testString" + model["location"] = []map[string]interface{}{locationDrModel} + model["name"] = "testString" + model["status"] = "active" + + assert.Equal(t, result, model) + } + + detailsDrModel := new(drautomationservicev1.DetailsDr) + detailsDrModel.Crn = core.StringPtr("crn:v1:bluemix:public:power-iaas:lon06:a/094f4214c75941f991da601b001df1fe:b6297e60-d0fe-4e24-8b15-276cf0645737::") + + locationDrModel := new(drautomationservicev1.LocationDr) + locationDrModel.Region = core.StringPtr("lon06") + locationDrModel.Type = core.StringPtr("data-center") + locationDrModel.URL = core.StringPtr("https://lon.power-iaas.cloud.ibm.com") + + model := new(drautomationservicev1.DRWorkspace) + model.Default = core.BoolPtr(true) + model.Details = detailsDrModel + model.ID = core.StringPtr("testString") + model.Location = locationDrModel + model.Name = core.StringPtr("testString") + model.Status = core.StringPtr("active") + + result, err := drautomationservice.DataSourceIbmPdrWorkspaceCustomVpcDRWorkspaceToMap(model) + assert.Nil(t, err) + checkResult(result) +} diff --git a/ibm/service/drautomationservice/data_source_ibm_pdr_workspace_schematic.go b/ibm/service/drautomationservice/data_source_ibm_pdr_workspace_schematic.go new file mode 100644 index 0000000000..3a6af70d5b --- /dev/null +++ b/ibm/service/drautomationservice/data_source_ibm_pdr_workspace_schematic.go @@ -0,0 +1,319 @@ +// Copyright IBM Corp. 2025 All Rights Reserved. +// Licensed under the Mozilla Public License v2.0 + +/* + * IBM OpenAPI Terraform Generator Version: 3.105.0-3c13b041-20250605-193116 +*/ + +package drautomationservice + +import ( + "context" + "fmt" + "log" + "time" + + "github.com/hashicorp/terraform-plugin-sdk/v2/diag" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" + + "github.com/IBM-Cloud/terraform-provider-ibm/ibm/conns" + "github.com/IBM-Cloud/terraform-provider-ibm/ibm/flex" + "github.ibm.com/DRAutomation/dra-go-sdk/drautomationservicev1" +) + +func DataSourceIbmPdrWorkspaceSchematic() *schema.Resource { + return &schema.Resource{ + ReadContext: dataSourceIbmPdrWorkspaceSchematicRead, + + Schema: map[string]*schema.Schema{ + "instance_id": &schema.Schema{ + Type: schema.TypeString, + Required: true, + Description: "instance id of instance to provision.", + }, + "schematic_id": &schema.Schema{ + Type: schema.TypeString, + Required: true, + Description: "Schematic ID value.", + }, + "location_id": &schema.Schema{ + Type: schema.TypeString, + Required: true, + Description: "Location ID value.", + }, + "if_none_match": &schema.Schema{ + Type: schema.TypeString, + Optional: true, + Description: "ETag for conditional requests (optional).", + }, + "dr_standby_workspaces": &schema.Schema{ + Type: schema.TypeList, + Computed: true, + Description: "List of standby disaster recovery workspaces.", + Elem: &schema.Resource{ + Schema: map[string]*schema.Schema{ + "details": &schema.Schema{ + Type: schema.TypeList, + Computed: true, + Description: "Detailed information of the standby DR workspace.", + Elem: &schema.Resource{ + Schema: map[string]*schema.Schema{ + "crn": &schema.Schema{ + Type: schema.TypeString, + Computed: true, + Description: "Cloud Resource Name (CRN) of the DR workspace.", + }, + }, + }, + }, + "id": &schema.Schema{ + Type: schema.TypeString, + Computed: true, + Description: "Unique identifier of the standby workspace.", + }, + "location": &schema.Schema{ + Type: schema.TypeList, + Computed: true, + Description: "Location information of the standby workspace.", + Elem: &schema.Resource{ + Schema: map[string]*schema.Schema{ + "region": &schema.Schema{ + Type: schema.TypeString, + Computed: true, + Description: "The region identifier of the DR location.", + }, + "type": &schema.Schema{ + Type: schema.TypeString, + Computed: true, + Description: "The type of location (e.g., data-center, cloud-region).", + }, + "url": &schema.Schema{ + Type: schema.TypeString, + Computed: true, + Description: "The URL endpoint to access the DR location.", + }, + }, + }, + }, + "name": &schema.Schema{ + Type: schema.TypeString, + Computed: true, + Description: "Name of the standby workspace.", + }, + "status": &schema.Schema{ + Type: schema.TypeString, + Computed: true, + Description: "Current status of the standby workspace.", + }, + }, + }, + }, + "dr_workspaces": &schema.Schema{ + Type: schema.TypeList, + Computed: true, + Description: "List of primary disaster recovery workspaces.", + Elem: &schema.Resource{ + Schema: map[string]*schema.Schema{ + "default": &schema.Schema{ + Type: schema.TypeBool, + Computed: true, + Description: "Indicates if this is the default DR workspace.", + }, + "details": &schema.Schema{ + Type: schema.TypeList, + Computed: true, + Description: "Detailed information about the DR workspace.", + Elem: &schema.Resource{ + Schema: map[string]*schema.Schema{ + "crn": &schema.Schema{ + Type: schema.TypeString, + Computed: true, + Description: "Cloud Resource Name (CRN) of the DR workspace.", + }, + }, + }, + }, + "id": &schema.Schema{ + Type: schema.TypeString, + Computed: true, + Description: "Unique identifier of the DR workspace.", + }, + "location": &schema.Schema{ + Type: schema.TypeList, + Computed: true, + Description: "Location information of the DR workspace.", + Elem: &schema.Resource{ + Schema: map[string]*schema.Schema{ + "region": &schema.Schema{ + Type: schema.TypeString, + Computed: true, + Description: "The region identifier of the DR location.", + }, + "type": &schema.Schema{ + Type: schema.TypeString, + Computed: true, + Description: "The type of location (e.g., data-center, cloud-region).", + }, + "url": &schema.Schema{ + Type: schema.TypeString, + Computed: true, + Description: "The URL endpoint to access the DR location.", + }, + }, + }, + }, + "name": &schema.Schema{ + Type: schema.TypeString, + Computed: true, + Description: "Name of the DR workspace.", + }, + "status": &schema.Schema{ + Type: schema.TypeString, + Computed: true, + Description: "Current status of the DR workspace.", + }, + }, + }, + }, + }, + } +} + +func dataSourceIbmPdrWorkspaceSchematicRead(context context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { + drAutomationServiceClient, err := meta.(conns.ClientSession).DrAutomationServiceV1() + if err != nil { + tfErr := flex.DiscriminatedTerraformErrorf(err, err.Error(), "(Data) ibm_pdr_workspace_schematic", "read", "initialize-client") + log.Printf("[DEBUG]\n%s", tfErr.GetDebugMessage()) + return tfErr.GetDiag() + } + + getPvsworkspaceSchematicOptions := &drautomationservicev1.GetPvsworkspaceSchematicOptions{} + + getPvsworkspaceSchematicOptions.SetInstanceID(d.Get("instance_id").(string)) + getPvsworkspaceSchematicOptions.SetSchematicID(d.Get("schematic_id").(string)) + getPvsworkspaceSchematicOptions.SetLocationID(d.Get("location_id").(string)) + if _, ok := d.GetOk("if_none_match"); ok { + getPvsworkspaceSchematicOptions.SetIfNoneMatch(d.Get("if_none_match").(string)) + } + + drData, _, err := drAutomationServiceClient.GetPvsworkspaceSchematicWithContext(context, getPvsworkspaceSchematicOptions) + if err != nil { + tfErr := flex.TerraformErrorf(err, fmt.Sprintf("GetPvsworkspaceSchematicWithContext failed: %s", err.Error()), "(Data) ibm_pdr_workspace_schematic", "read") + log.Printf("[DEBUG]\n%s", tfErr.GetDebugMessage()) + return tfErr.GetDiag() + } + + d.SetId(dataSourceIbmPdrWorkspaceSchematicID(d)) + + drStandbyWorkspaces := []map[string]interface{}{} + for _, drStandbyWorkspacesItem := range drData.DrStandbyWorkspaces { + drStandbyWorkspacesItemMap, err := DataSourceIbmPdrWorkspaceSchematicDRStandbyWorkspaceToMap(&drStandbyWorkspacesItem) // #nosec G601 + if err != nil { + return flex.DiscriminatedTerraformErrorf(err, err.Error(), "(Data) ibm_pdr_workspace_schematic", "read", "dr_standby_workspaces-to-map").GetDiag() + } + drStandbyWorkspaces = append(drStandbyWorkspaces, drStandbyWorkspacesItemMap) + } + if err = d.Set("dr_standby_workspaces", drStandbyWorkspaces); err != nil { + return flex.DiscriminatedTerraformErrorf(err, fmt.Sprintf("Error setting dr_standby_workspaces: %s", err), "(Data) ibm_pdr_workspace_schematic", "read", "set-dr_standby_workspaces").GetDiag() + } + + drWorkspaces := []map[string]interface{}{} + for _, drWorkspacesItem := range drData.DrWorkspaces { + drWorkspacesItemMap, err := DataSourceIbmPdrWorkspaceSchematicDRWorkspaceToMap(&drWorkspacesItem) // #nosec G601 + if err != nil { + return flex.DiscriminatedTerraformErrorf(err, err.Error(), "(Data) ibm_pdr_workspace_schematic", "read", "dr_workspaces-to-map").GetDiag() + } + drWorkspaces = append(drWorkspaces, drWorkspacesItemMap) + } + if err = d.Set("dr_workspaces", drWorkspaces); err != nil { + return flex.DiscriminatedTerraformErrorf(err, fmt.Sprintf("Error setting dr_workspaces: %s", err), "(Data) ibm_pdr_workspace_schematic", "read", "set-dr_workspaces").GetDiag() + } + + return nil +} + +// dataSourceIbmPdrWorkspaceSchematicID returns a reasonable ID for the list. +func dataSourceIbmPdrWorkspaceSchematicID(d *schema.ResourceData) string { + return time.Now().UTC().String() +} + +func DataSourceIbmPdrWorkspaceSchematicDRStandbyWorkspaceToMap(model *drautomationservicev1.DRStandbyWorkspace) (map[string]interface{}, error) { + modelMap := make(map[string]interface{}) + if model.Details != nil { + detailsMap, err := DataSourceIbmPdrWorkspaceSchematicDetailsDrToMap(model.Details) + if err != nil { + return modelMap, err + } + modelMap["details"] = []map[string]interface{}{detailsMap} + } + if model.ID != nil { + modelMap["id"] = *model.ID + } + if model.Location != nil { + locationMap, err := DataSourceIbmPdrWorkspaceSchematicLocationDrToMap(model.Location) + if err != nil { + return modelMap, err + } + modelMap["location"] = []map[string]interface{}{locationMap} + } + if model.Name != nil { + modelMap["name"] = *model.Name + } + if model.Status != nil { + modelMap["status"] = *model.Status + } + return modelMap, nil +} + +func DataSourceIbmPdrWorkspaceSchematicDetailsDrToMap(model *drautomationservicev1.DetailsDr) (map[string]interface{}, error) { + modelMap := make(map[string]interface{}) + if model.Crn != nil { + modelMap["crn"] = *model.Crn + } + return modelMap, nil +} + +func DataSourceIbmPdrWorkspaceSchematicLocationDrToMap(model *drautomationservicev1.LocationDr) (map[string]interface{}, error) { + modelMap := make(map[string]interface{}) + if model.Region != nil { + modelMap["region"] = *model.Region + } + if model.Type != nil { + modelMap["type"] = *model.Type + } + if model.URL != nil { + modelMap["url"] = *model.URL + } + return modelMap, nil +} + +func DataSourceIbmPdrWorkspaceSchematicDRWorkspaceToMap(model *drautomationservicev1.DRWorkspace) (map[string]interface{}, error) { + modelMap := make(map[string]interface{}) + if model.Default != nil { + modelMap["default"] = *model.Default + } + if model.Details != nil { + detailsMap, err := DataSourceIbmPdrWorkspaceSchematicDetailsDrToMap(model.Details) + if err != nil { + return modelMap, err + } + modelMap["details"] = []map[string]interface{}{detailsMap} + } + if model.ID != nil { + modelMap["id"] = *model.ID + } + if model.Location != nil { + locationMap, err := DataSourceIbmPdrWorkspaceSchematicLocationDrToMap(model.Location) + if err != nil { + return modelMap, err + } + modelMap["location"] = []map[string]interface{}{locationMap} + } + if model.Name != nil { + modelMap["name"] = *model.Name + } + if model.Status != nil { + modelMap["status"] = *model.Status + } + return modelMap, nil +} diff --git a/ibm/service/drautomationservice/data_source_ibm_pdr_workspace_schematic_test.go b/ibm/service/drautomationservice/data_source_ibm_pdr_workspace_schematic_test.go new file mode 100644 index 0000000000..71ff416db9 --- /dev/null +++ b/ibm/service/drautomationservice/data_source_ibm_pdr_workspace_schematic_test.go @@ -0,0 +1,169 @@ +// Copyright IBM Corp. 2025 All Rights Reserved. +// Licensed under the Mozilla Public License v2.0 + +/* + * IBM OpenAPI Terraform Generator Version: 3.105.0-3c13b041-20250605-193116 + */ + +package drautomationservice_test + +import ( + "fmt" + "testing" + + "github.com/hashicorp/terraform-plugin-testing/helper/resource" + + acc "github.com/IBM-Cloud/terraform-provider-ibm/ibm/acctest" + "github.com/IBM-Cloud/terraform-provider-ibm/ibm/service/drautomationservice" + "github.com/IBM/go-sdk-core/v5/core" + "github.com/stretchr/testify/assert" + "github.ibm.com/DRAutomation/dra-go-sdk/drautomationservicev1" +) + +func TestAccIbmPdrWorkspaceSchematicDataSourceBasic(t *testing.T) { + resource.Test(t, resource.TestCase{ + PreCheck: func() { acc.TestAccPreCheck(t) }, + Providers: acc.TestAccProviders, + Steps: []resource.TestStep{ + resource.TestStep{ + Config: testAccCheckIbmPdrWorkspaceSchematicDataSourceConfigBasic(), + Check: resource.ComposeTestCheckFunc( + resource.TestCheckResourceAttrSet("data.ibm_pdr_workspace_schematic.pdr_workspace_schematic_instance", "id"), + resource.TestCheckResourceAttrSet("data.ibm_pdr_workspace_schematic.pdr_workspace_schematic_instance", "instance_id"), + resource.TestCheckResourceAttrSet("data.ibm_pdr_workspace_schematic.pdr_workspace_schematic_instance", "schematic_id"), + resource.TestCheckResourceAttrSet("data.ibm_pdr_workspace_schematic.pdr_workspace_schematic_instance", "location_id"), + resource.TestCheckResourceAttrSet("data.ibm_pdr_workspace_schematic.pdr_workspace_schematic_instance", "dr_standby_workspaces.#"), + resource.TestCheckResourceAttrSet("data.ibm_pdr_workspace_schematic.pdr_workspace_schematic_instance", "dr_workspaces.#"), + ), + }, + }, + }) +} + +func testAccCheckIbmPdrWorkspaceSchematicDataSourceConfigBasic() string { + return fmt.Sprintf(` + data "ibm_pdr_workspace_schematic" "pdr_workspace_schematic_instance" { + instance_id = "crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::" + schematic_id = "us-south.workspace.projects-service.3ae96a02" + location_id = "lon06" + } + `) +} + +func TestDataSourceIbmPdrWorkspaceSchematicDRStandbyWorkspaceToMap(t *testing.T) { + checkResult := func(result map[string]interface{}) { + detailsDrModel := make(map[string]interface{}) + detailsDrModel["crn"] = "crn:v1:bluemix:public:power-iaas:lon06:a/094f4214c75941f991da601b001df1fe:b6297e60-d0fe-4e24-8b15-276cf0645737::" + + locationDrModel := make(map[string]interface{}) + locationDrModel["region"] = "lon06" + locationDrModel["type"] = "data-center" + locationDrModel["url"] = "https://lon.power-iaas.cloud.ibm.com" + + model := make(map[string]interface{}) + model["details"] = []map[string]interface{}{detailsDrModel} + model["id"] = "testString" + model["location"] = []map[string]interface{}{locationDrModel} + model["name"] = "testString" + model["status"] = "testString" + + assert.Equal(t, result, model) + } + + detailsDrModel := new(drautomationservicev1.DetailsDr) + detailsDrModel.Crn = core.StringPtr("crn:v1:bluemix:public:power-iaas:lon06:a/094f4214c75941f991da601b001df1fe:b6297e60-d0fe-4e24-8b15-276cf0645737::") + + locationDrModel := new(drautomationservicev1.LocationDr) + locationDrModel.Region = core.StringPtr("lon06") + locationDrModel.Type = core.StringPtr("data-center") + locationDrModel.URL = core.StringPtr("https://lon.power-iaas.cloud.ibm.com") + + model := new(drautomationservicev1.DRStandbyWorkspace) + model.Details = detailsDrModel + model.ID = core.StringPtr("testString") + model.Location = locationDrModel + model.Name = core.StringPtr("testString") + model.Status = core.StringPtr("testString") + + result, err := drautomationservice.DataSourceIbmPdrWorkspaceSchematicDRStandbyWorkspaceToMap(model) + assert.Nil(t, err) + checkResult(result) +} + +func TestDataSourceIbmPdrWorkspaceSchematicDetailsDrToMap(t *testing.T) { + checkResult := func(result map[string]interface{}) { + model := make(map[string]interface{}) + model["crn"] = "crn:v1:bluemix:public:power-iaas:lon06:a/094f4214c75941f991da601b001df1fe:b6297e60-d0fe-4e24-8b15-276cf0645737::" + + assert.Equal(t, result, model) + } + + model := new(drautomationservicev1.DetailsDr) + model.Crn = core.StringPtr("crn:v1:bluemix:public:power-iaas:lon06:a/094f4214c75941f991da601b001df1fe:b6297e60-d0fe-4e24-8b15-276cf0645737::") + + result, err := drautomationservice.DataSourceIbmPdrWorkspaceSchematicDetailsDrToMap(model) + assert.Nil(t, err) + checkResult(result) +} + +func TestDataSourceIbmPdrWorkspaceSchematicLocationDrToMap(t *testing.T) { + checkResult := func(result map[string]interface{}) { + model := make(map[string]interface{}) + model["region"] = "lon06" + model["type"] = "data-center" + model["url"] = "https://lon.power-iaas.cloud.ibm.com" + + assert.Equal(t, result, model) + } + + model := new(drautomationservicev1.LocationDr) + model.Region = core.StringPtr("lon06") + model.Type = core.StringPtr("data-center") + model.URL = core.StringPtr("https://lon.power-iaas.cloud.ibm.com") + + result, err := drautomationservice.DataSourceIbmPdrWorkspaceSchematicLocationDrToMap(model) + assert.Nil(t, err) + checkResult(result) +} + +func TestDataSourceIbmPdrWorkspaceSchematicDRWorkspaceToMap(t *testing.T) { + checkResult := func(result map[string]interface{}) { + detailsDrModel := make(map[string]interface{}) + detailsDrModel["crn"] = "crn:v1:bluemix:public:power-iaas:lon06:a/094f4214c75941f991da601b001df1fe:b6297e60-d0fe-4e24-8b15-276cf0645737::" + + locationDrModel := make(map[string]interface{}) + locationDrModel["region"] = "lon06" + locationDrModel["type"] = "data-center" + locationDrModel["url"] = "https://lon.power-iaas.cloud.ibm.com" + + model := make(map[string]interface{}) + model["default"] = true + model["details"] = []map[string]interface{}{detailsDrModel} + model["id"] = "testString" + model["location"] = []map[string]interface{}{locationDrModel} + model["name"] = "testString" + model["status"] = "active" + + assert.Equal(t, result, model) + } + + detailsDrModel := new(drautomationservicev1.DetailsDr) + detailsDrModel.Crn = core.StringPtr("crn:v1:bluemix:public:power-iaas:lon06:a/094f4214c75941f991da601b001df1fe:b6297e60-d0fe-4e24-8b15-276cf0645737::") + + locationDrModel := new(drautomationservicev1.LocationDr) + locationDrModel.Region = core.StringPtr("lon06") + locationDrModel.Type = core.StringPtr("data-center") + locationDrModel.URL = core.StringPtr("https://lon.power-iaas.cloud.ibm.com") + + model := new(drautomationservicev1.DRWorkspace) + model.Default = core.BoolPtr(true) + model.Details = detailsDrModel + model.ID = core.StringPtr("testString") + model.Location = locationDrModel + model.Name = core.StringPtr("testString") + model.Status = core.StringPtr("active") + + result, err := drautomationservice.DataSourceIbmPdrWorkspaceSchematicDRWorkspaceToMap(model) + assert.Nil(t, err) + checkResult(result) +} diff --git a/ibm/service/drautomationservice/resource_ibm_pdr_managedr.go b/ibm/service/drautomationservice/resource_ibm_pdr_managedr.go new file mode 100644 index 0000000000..ad641de2e7 --- /dev/null +++ b/ibm/service/drautomationservice/resource_ibm_pdr_managedr.go @@ -0,0 +1,426 @@ +// Copyright IBM Corp. 2025 All Rights Reserved. +// Licensed under the Mozilla Public License v2.0 + +/* + * IBM OpenAPI Terraform Generator Version: 3.105.0-3c13b041-20250605-193116 + */ + +package drautomationservice + +import ( + "context" + "fmt" + "log" + + "github.com/hashicorp/terraform-plugin-sdk/v2/diag" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" + + "github.com/IBM-Cloud/terraform-provider-ibm/ibm/conns" + "github.com/IBM-Cloud/terraform-provider-ibm/ibm/flex" + "github.com/IBM-Cloud/terraform-provider-ibm/ibm/validate" + "github.com/IBM/go-sdk-core/v5/core" + "github.ibm.com/DRAutomation/dra-go-sdk/drautomationservicev1" +) + +func ResourceIbmPdrManagedr() *schema.Resource { + return &schema.Resource{ + CreateContext: resourceIbmPdrManagedrCreate, + ReadContext: resourceIbmPdrManagedrRead, + DeleteContext: resourceIbmPdrManagedrDelete, + Importer: &schema.ResourceImporter{}, + + Schema: map[string]*schema.Schema{ + "instance_id": &schema.Schema{ + Type: schema.TypeString, + Required: true, + ForceNew: true, + Description: "instance id of instance to provision.", + }, + "stand_by_redeploy": &schema.Schema{ + Type: schema.TypeString, + Required: true, + ForceNew: true, + ValidateFunc: validate.InvokeValidator("ibm_pdr_managedr", "stand_by_redeploy"), + Description: "Flag to indicate if standby should be redeployed (must be \"true\" or \"false\").", + }, + "accept_language": &schema.Schema{ + Type: schema.TypeString, + Optional: true, + ForceNew: true, + Description: "The language requested for the return document.", + }, + "if_none_match": &schema.Schema{ + Type: schema.TypeString, + Optional: true, + ForceNew: true, + Description: "ETag for conditional requests (optional).", + }, + "accepts_incomplete": &schema.Schema{ + Type: schema.TypeBool, + Optional: true, + Default: true, + ForceNew: true, + Description: "A value of true indicates that both the IBM Cloud platform and the requesting client support asynchronous deprovisioning.", + }, + "dashboard_url": &schema.Schema{ + Type: schema.TypeString, + Computed: true, + Description: "URL to the dashboard for managing the DR service instance in IBM Cloud.", + }, + "id": &schema.Schema{ + Type: schema.TypeString, + Computed: true, + Description: "The CRN (Cloud Resource Name) of the DR service instance.", + }, + "etag": &schema.Schema{ + Type: schema.TypeString, + Computed: true, + ForceNew: true, + }, + "action": { + Type: schema.TypeString, + ForceNew: true, + Optional: true, + }, + "api_key": { + Type: schema.TypeString, + Sensitive: true, + ForceNew: true, + Optional: true, + }, + "enable_ha": { + Type: schema.TypeBool, + Optional: true, + ForceNew: true, + }, + "guid": { + Type: schema.TypeString, + ForceNew: true, + Optional: true, + }, + "location_id": { + Type: schema.TypeString, + ForceNew: true, + Optional: true, + }, + "machine_type": { + Type: schema.TypeString, + Optional: true, + ForceNew: true, + }, + "orchestrator_cluster_type": { + Type: schema.TypeString, + Optional: true, + ForceNew: true, + }, + "orchestrator_name": { + Type: schema.TypeString, + ForceNew: true, + Optional: true, + }, + "orchestrator_password": { + Type: schema.TypeString, + Sensitive: true, + ForceNew: true, + Optional: true, + }, + "orchestrator_workspace_id": { + Type: schema.TypeString, + ForceNew: true, + Optional: true, + }, + "orchestrator_workspace_location": { + Type: schema.TypeString, + ForceNew: true, + Optional: true, + }, + "proxy_ip": { + Type: schema.TypeString, + Optional: true, + ForceNew: true, + }, + "region_id": { + Type: schema.TypeString, + ForceNew: true, + Optional: true, + }, + "resource_instance": { + Type: schema.TypeString, + ForceNew: true, + Optional: true, + }, + "schematic_workspace_id": { + Type: schema.TypeString, + Optional: true, + ForceNew: true, + }, + "secondary_workspace_id": { + Type: schema.TypeString, + Optional: true, + ForceNew: true, + }, + "secret": { + Type: schema.TypeString, + Optional: true, + ForceNew: true, + }, + "secret_group": { + Type: schema.TypeString, + Optional: true, + ForceNew: true, + }, + "ssh_key_name": { + Type: schema.TypeString, + Optional: true, + ForceNew: true, + }, + "ssh_public_key": { + Type: schema.TypeString, + Optional: true, + ForceNew: true, + }, + "standby_machine_type": { + Type: schema.TypeString, + Optional: true, + ForceNew: true, + }, + "standby_orchestrator_name": { + Type: schema.TypeString, + Optional: true, + ForceNew: true, + }, + "standby_orchestrator_workspace_id": { + Type: schema.TypeString, + Optional: true, + ForceNew: true, + }, + "standby_orchestrator_workspace_location": { + Type: schema.TypeString, + Optional: true, + ForceNew: true, + }, + "standby_schematic_workspace_id": { + Type: schema.TypeString, + Optional: true, + ForceNew: true, + }, + "standby_tier": { + Type: schema.TypeString, + Optional: true, + ForceNew: true, + }, + "tier": { + Type: schema.TypeString, + Optional: true, + ForceNew: true, + }, + "transit_gateway_id": { + Type: schema.TypeString, + Optional: true, + ForceNew: true, + }, + "vpc_id": { + Type: schema.TypeString, + Optional: true, + ForceNew: true, + }, + }, + } +} + +func ResourceIbmPdrManagedrValidator() *validate.ResourceValidator { + validateSchema := make([]validate.ValidateSchema, 0) + validateSchema = append(validateSchema, + validate.ValidateSchema{ + Identifier: "stand_by_redeploy", + ValidateFunctionIdentifier: validate.ValidateAllowedStringValue, + Type: validate.TypeString, + Required: true, + AllowedValues: "false, true", + }, + ) + + resourceValidator := validate.ResourceValidator{ResourceName: "ibm_pdr_managedr", Schema: validateSchema} + return &resourceValidator +} + +func resourceIbmPdrManagedrCreate(context context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { + drAutomationServiceClient, err := meta.(conns.ClientSession).DrAutomationServiceV1() + if err != nil { + tfErr := flex.DiscriminatedTerraformErrorf(err, err.Error(), "ibm_pdr_managedr", "create", "initialize-client") + log.Printf("[DEBUG]\n%s", tfErr.GetDebugMessage()) + return tfErr.GetDiag() + } + + createManageDrOptions := &drautomationservicev1.CreateManageDrOptions{} + + createManageDrOptions.SetInstanceID(d.Get("instance_id").(string)) + createManageDrOptions.SetStandByRedeploy(d.Get("stand_by_redeploy").(string)) + if _, ok := d.GetOk("action"); ok { + createManageDrOptions.SetAction(d.Get("action").(string)) + } + if _, ok := d.GetOk("api_key"); ok { + createManageDrOptions.SetApiKey(d.Get("api_key").(string)) + } + if _, ok := d.GetOk("enable_ha"); ok { + createManageDrOptions.SetEnableHa(d.Get("enable_ha").(bool)) + } + if _, ok := d.GetOk("guid"); ok { + createManageDrOptions.SetGuid(d.Get("guid").(string)) + } + if _, ok := d.GetOk("location_id"); ok { + createManageDrOptions.SetLocationID(d.Get("location_id").(string)) + } + if _, ok := d.GetOk("machine_type"); ok { + createManageDrOptions.SetMachineType(d.Get("machine_type").(string)) + } + if _, ok := d.GetOk("orchestrator_cluster_type"); ok { + createManageDrOptions.SetOrchestratorClusterType(d.Get("orchestrator_cluster_type").(string)) + } + if _, ok := d.GetOk("orchestrator_name"); ok { + createManageDrOptions.SetOrchestratorName(d.Get("orchestrator_name").(string)) + } + if _, ok := d.GetOk("orchestrator_password"); ok { + createManageDrOptions.SetOrchestratorPassword(d.Get("orchestrator_password").(string)) + } + if _, ok := d.GetOk("orchestrator_workspace_id"); ok { + createManageDrOptions.SetOrchestratorWorkspaceID(d.Get("orchestrator_workspace_id").(string)) + } + if _, ok := d.GetOk("orchestrator_workspace_location"); ok { + createManageDrOptions.SetOrchestratorWorkspaceLocation(d.Get("orchestrator_workspace_location").(string)) + } + if _, ok := d.GetOk("proxy_ip"); ok { + createManageDrOptions.SetProxyIp(d.Get("proxy_ip").(string)) + } + if _, ok := d.GetOk("region_id"); ok { + createManageDrOptions.SetRegionID(d.Get("region_id").(string)) + } + if _, ok := d.GetOk("resource_instance"); ok { + createManageDrOptions.SetResourceInstance(d.Get("resource_instance").(string)) + } + if _, ok := d.GetOk("schematic_workspace_id"); ok { + createManageDrOptions.SetSchematicWorkspaceID(d.Get("schematic_workspace_id").(string)) + } + if _, ok := d.GetOk("secondary_workspace_id"); ok { + createManageDrOptions.SetSecondaryWorkspaceID(d.Get("secondary_workspace_id").(string)) + } + if _, ok := d.GetOk("secret"); ok { + createManageDrOptions.SetSecret(d.Get("secret").(string)) + } + if _, ok := d.GetOk("secret_group"); ok { + createManageDrOptions.SetSecretGroup(d.Get("secret_group").(string)) + } + if _, ok := d.GetOk("ssh_key_name"); ok { + createManageDrOptions.SetSshKeyName(d.Get("ssh_key_name").(string)) + } + if _, ok := d.GetOk("ssh_public_key"); ok { + createManageDrOptions.SetSshPublicKey(d.Get("ssh_public_key").(string)) + } + if _, ok := d.GetOk("standby_machine_type"); ok { + createManageDrOptions.SetStandbyMachineType(d.Get("standby_machine_type").(string)) + } + if _, ok := d.GetOk("standby_orchestrator_name"); ok { + createManageDrOptions.SetStandbyOrchestratorName(d.Get("standby_orchestrator_name").(string)) + } + if _, ok := d.GetOk("standby_orchestrator_workspace_id"); ok { + createManageDrOptions.SetStandbyOrchestratorWorkspaceID(d.Get("standby_orchestrator_workspace_id").(string)) + } + if _, ok := d.GetOk("standby_orchestrator_workspace_location"); ok { + createManageDrOptions.SetStandbyOrchestratorWorkspaceLocation(d.Get("standby_orchestrator_workspace_location").(string)) + } + if _, ok := d.GetOk("standby_schematic_workspace_id"); ok { + createManageDrOptions.SetStandbySchematicWorkspaceID(d.Get("standby_schematic_workspace_id").(string)) + } + if _, ok := d.GetOk("standby_tier"); ok { + createManageDrOptions.SetStandbyTier(d.Get("standby_tier").(string)) + } + if _, ok := d.GetOk("tier"); ok { + createManageDrOptions.SetTier(d.Get("tier").(string)) + } + if _, ok := d.GetOk("transit_gateway_id"); ok { + createManageDrOptions.SetTransitGatewayID(d.Get("transit_gateway_id").(string)) + } + if _, ok := d.GetOk("vpc_id"); ok { + createManageDrOptions.SetVpcID(d.Get("vpc_id").(string)) + } + if _, ok := d.GetOk("accept_language"); ok { + createManageDrOptions.SetAcceptLanguage(d.Get("accept_language").(string)) + } + if _, ok := d.GetOk("if_none_match"); ok { + createManageDrOptions.SetIfNoneMatch(d.Get("if_none_match").(string)) + } + if _, ok := d.GetOk("accepts_incomplete"); ok { + createManageDrOptions.SetAcceptsIncomplete(d.Get("accepts_incomplete").(bool)) + } + + serviceInstanceManageDr, _, err := drAutomationServiceClient.CreateManageDrWithContext(context, createManageDrOptions) + if err != nil { + tfErr := flex.TerraformErrorf(err, fmt.Sprintf("CreateManageDrWithContext failed: %s", err.Error()), "ibm_pdr_managedr", "create") + log.Printf("[DEBUG]\n%s", tfErr.GetDebugMessage()) + return tfErr.GetDiag() + } + + d.SetId(fmt.Sprintf("%s/%s", *createManageDrOptions.InstanceID, *serviceInstanceManageDr.ID)) + + return resourceIbmPdrManagedrRead(context, d, meta) +} + +func resourceIbmPdrManagedrRead(context context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { + drAutomationServiceClient, err := meta.(conns.ClientSession).DrAutomationServiceV1() + if err != nil { + tfErr := flex.DiscriminatedTerraformErrorf(err, err.Error(), "ibm_pdr_managedr", "read", "initialize-client") + log.Printf("[DEBUG]\n%s", tfErr.GetDebugMessage()) + return tfErr.GetDiag() + } + + getManageDrOptions := &drautomationservicev1.GetManageDrOptions{} + + parts, err := flex.SepIdParts(d.Id(), "/") + if err != nil { + return flex.DiscriminatedTerraformErrorf(err, err.Error(), "ibm_pdr_managedr", "read", "sep-id-parts").GetDiag() + } + + getManageDrOptions.SetInstanceID(parts[0]) + getManageDrOptions.SetInstanceID(parts[1]) + if _, ok := d.GetOk("accept_language"); ok { + getManageDrOptions.SetAcceptLanguage(d.Get("accept_language").(string)) + } + if _, ok := d.GetOk("if_none_match"); ok { + getManageDrOptions.SetIfNoneMatch(d.Get("if_none_match").(string)) + } + + serviceInstanceManageDr, response, err := drAutomationServiceClient.GetManageDrWithContext(context, getManageDrOptions) + if err != nil { + if response != nil && response.StatusCode == 404 { + d.SetId("") + return nil + } + tfErr := flex.TerraformErrorf(err, fmt.Sprintf("GetManageDrWithContext failed: %s", err.Error()), "ibm_pdr_managedr", "read") + log.Printf("[DEBUG]\n%s", tfErr.GetDebugMessage()) + return tfErr.GetDiag() + } + + if !core.IsNil(serviceInstanceManageDr.DashboardURL) { + if err = d.Set("dashboard_url", serviceInstanceManageDr.DashboardURL); err != nil { + err = fmt.Errorf("Error setting dashboard_url: %s", err) + return flex.DiscriminatedTerraformErrorf(err, err.Error(), "ibm_pdr_managedr", "read", "set-dashboard_url").GetDiag() + } + } + if !core.IsNil(serviceInstanceManageDr.ID) { + if err = d.Set("instance_id", serviceInstanceManageDr.ID); err != nil { + err = fmt.Errorf("Error setting instance_id: %s", err) + return flex.DiscriminatedTerraformErrorf(err, err.Error(), "ibm_pdr_managedr", "read", "set-instance_id").GetDiag() + } + } + if err = d.Set("etag", response.Headers.Get("Etag")); err != nil { + return flex.DiscriminatedTerraformErrorf(err, fmt.Sprintf("Error setting etag: %s", err), "ibm_pdr_managedr", "read", "set-etag").GetDiag() + } + + return nil +} + +func resourceIbmPdrManagedrDelete(context context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { + // This resource does not support a "delete" operation. + d.SetId("") + return nil +} diff --git a/ibm/service/drautomationservice/resource_ibm_pdr_managedr_test.go b/ibm/service/drautomationservice/resource_ibm_pdr_managedr_test.go new file mode 100644 index 0000000000..a106f5c5c7 --- /dev/null +++ b/ibm/service/drautomationservice/resource_ibm_pdr_managedr_test.go @@ -0,0 +1,191 @@ +// Copyright IBM Corp. 2025 All Rights Reserved. +// Licensed under the Mozilla Public License v2.0 + +package drautomationservice_test + +import ( + "fmt" + "testing" + + "github.com/hashicorp/terraform-plugin-testing/helper/acctest" + "github.com/hashicorp/terraform-plugin-testing/helper/resource" + "github.com/hashicorp/terraform-plugin-testing/terraform" + + acc "github.com/IBM-Cloud/terraform-provider-ibm/ibm/acctest" + "github.com/IBM-Cloud/terraform-provider-ibm/ibm/conns" + "github.com/IBM-Cloud/terraform-provider-ibm/ibm/flex" + "github.ibm.com/DRAutomation/dra-go-sdk/drautomationservicev1" +) + +func TestAccIbmPdrManagedrBasic(t *testing.T) { + var conf drautomationservicev1.ServiceInstanceManageDR + instanceID := "crn:v1:staging:public:power-dr-automation:global:a/a09202c1bfb04ceebfb4a9fd38c87721:050ebe3b-13f4-4db8-8ece-501a3c13be0965822::" + standByRedeploy := "false" + + resource.Test(t, resource.TestCase{ + PreCheck: func() { acc.TestAccPreCheck(t) }, + Providers: acc.TestAccProviders, + CheckDestroy: testAccCheckIbmPdrManagedrDestroy, + Steps: []resource.TestStep{ + resource.TestStep{ + Config: testAccCheckIbmPdrManagedrConfigBasic(instanceID, standByRedeploy), + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckIbmPdrManagedrExists("ibm_pdr_managedr.pdr_managedr_instance", conf), + resource.TestCheckResourceAttr("ibm_pdr_managedr.pdr_managedr_instance", "instance_id", instanceID), + resource.TestCheckResourceAttr("ibm_pdr_managedr.pdr_managedr_instance", "stand_by_redeploy", standByRedeploy), + ), + }, + }, + }) +} + +func TestAccIbmPdrManagedrAllArgs(t *testing.T) { + var conf drautomationservicev1.ServiceInstanceManageDR + instanceID := "crn:v1:staging:public:power-dr-automation:global:a/a09202c1bfb04ceebfb4a9fd38c87721:050ebe3b-13f4-4db8-8ece-501a3c13be0965822::" + standByRedeploy := "false" + acceptLanguage := fmt.Sprintf("tf_accept_language_%d", acctest.RandIntRange(10, 100)) + ifNoneMatch := fmt.Sprintf("tf_if_none_match_%d", acctest.RandIntRange(10, 100)) + acceptsIncomplete := "true" + + resource.Test(t, resource.TestCase{ + PreCheck: func() { acc.TestAccPreCheck(t) }, + Providers: acc.TestAccProviders, + CheckDestroy: testAccCheckIbmPdrManagedrDestroy, + Steps: []resource.TestStep{ + resource.TestStep{ + Config: testAccCheckIbmPdrManagedrConfig(instanceID, standByRedeploy, acceptLanguage, ifNoneMatch, acceptsIncomplete), + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckIbmPdrManagedrExists("ibm_pdr_managedr.pdr_managedr_instance", conf), + resource.TestCheckResourceAttr("ibm_pdr_managedr.pdr_managedr_instance", "instance_id", instanceID), + resource.TestCheckResourceAttr("ibm_pdr_managedr.pdr_managedr_instance", "stand_by_redeploy", standByRedeploy), + resource.TestCheckResourceAttr("ibm_pdr_managedr.pdr_managedr_instance", "accept_language", acceptLanguage), + resource.TestCheckResourceAttr("ibm_pdr_managedr.pdr_managedr_instance", "if_none_match", ifNoneMatch), + resource.TestCheckResourceAttr("ibm_pdr_managedr.pdr_managedr_instance", "accepts_incomplete", acceptsIncomplete), + ), + }, + resource.TestStep{ + ResourceName: "ibm_pdr_managedr.pdr_managedr", + ImportState: true, + ImportStateVerify: true, + }, + }, + }) +} + +func testAccCheckIbmPdrManagedrConfigBasic(instanceID string, standByRedeploy string) string { + return fmt.Sprintf(` + resource "ibm_pdr_managedr" "pdr_managedr_instance" { + # Path / query parameters + instance_id = "%s" + stand_by_redeploy = "%s" + + # Request body parameters (from ServiceInstanceManageDRRequest) + action = "" + api_key = "" + enable_ha = false + guid = "" + location_id = "dal10" + machine_type = "s922" + orchestrator_cluster_type = "off-premises" + orchestrator_name = "vindhya_NONHAtest1232" + orchestrator_password = "vindhyaSri@123hyuuu" + orchestrator_workspace_id = "75cbf05b-78f6-406e-afe7-a904f646d798" + ssh_key_name = "vijaykey" + orchestrator_workspace_location = "" + proxy_ip = "10.30.40.4:3128" + region_id = "" + resource_instance = "crn:v1:bluemix:public:resource-controller::res123" + schematic_workspace_id = "" + secondary_workspace_id = "" + secret = "" + secret_group = "" + standby_machine_type = "s922" + standby_orchestrator_name = "drautomationstandby" + standby_orchestrator_workspace_id = "71027b79-0e31-44f6-a499-63eca1a66feb" + standby_orchestrator_workspace_location = "" + standby_schematic_workspace_id = "" + standby_tier = "tier1" + tier = "tier1" + transit_gateway_id = "024fcff9-c676-46e4-ad42-3b2d349c9f8f" + vpc_id = "r006-2f3b3ab9-2149-49cc-83a1-30a5d93d59b2" + } + `, instanceID, standByRedeploy) +} + +func testAccCheckIbmPdrManagedrConfig(instanceID string, standByRedeploy string, acceptLanguage string, ifNoneMatch string, acceptsIncomplete string) string { + return fmt.Sprintf(` + + resource "ibm_pdr_managedr" "pdr_managedr_instance" { + instance_id = "%s" + stand_by_redeploy = "%s" + accept_language = "%s" + if_none_match = "%s" + accepts_incomplete = %s + } + `, instanceID, standByRedeploy, acceptLanguage, ifNoneMatch, acceptsIncomplete) +} + +func testAccCheckIbmPdrManagedrExists(n string, obj drautomationservicev1.ServiceInstanceManageDR) resource.TestCheckFunc { + + return func(s *terraform.State) error { + rs, ok := s.RootModule().Resources[n] + if !ok { + return fmt.Errorf("Not found: %s", n) + } + + drAutomationServiceClient, err := acc.TestAccProvider.Meta().(conns.ClientSession).DrAutomationServiceV1() + if err != nil { + return err + } + + getManageDrOptions := &drautomationservicev1.GetManageDrOptions{} + + parts, err := flex.SepIdParts(rs.Primary.ID, "/") + if err != nil { + return err + } + + getManageDrOptions.SetInstanceID(parts[0]) + getManageDrOptions.SetInstanceID(parts[1]) + + serviceInstanceManageDR, _, err := drAutomationServiceClient.GetManageDr(getManageDrOptions) + if err != nil { + return err + } + + obj = *serviceInstanceManageDR + return nil + } +} + +func testAccCheckIbmPdrManagedrDestroy(s *terraform.State) error { + drAutomationServiceClient, err := acc.TestAccProvider.Meta().(conns.ClientSession).DrAutomationServiceV1() + if err != nil { + return err + } + for _, rs := range s.RootModule().Resources { + if rs.Type != "ibm_pdr_managedr" { + continue + } + + getManageDrOptions := &drautomationservicev1.GetManageDrOptions{} + + parts, err := flex.SepIdParts(rs.Primary.ID, "/") + if err != nil { + return err + } + + getManageDrOptions.SetInstanceID(fmt.Sprintf("%s/%s", parts[0], parts[1])) + + // Try to find the key + _, response, err := drAutomationServiceClient.GetManageDr(getManageDrOptions) + + if err == nil { + return fmt.Errorf("pdr_managedr still exists: %s", rs.Primary.ID) + } else if response.StatusCode != 404 { + return fmt.Errorf("Error checking for pdr_managedr (%s) has been destroyed: %s", rs.Primary.ID, err) + } + } + + return nil +} diff --git a/ibm/service/drautomationservice/resource_ibm_pdr_validate_apikey.go b/ibm/service/drautomationservice/resource_ibm_pdr_validate_apikey.go new file mode 100644 index 0000000000..f9840f47fe --- /dev/null +++ b/ibm/service/drautomationservice/resource_ibm_pdr_validate_apikey.go @@ -0,0 +1,213 @@ +// Copyright IBM Corp. 2025 All Rights Reserved. +// Licensed under the Mozilla Public License v2.0 + +/* + * IBM OpenAPI Terraform Generator Version: 3.105.0-3c13b041-20250605-193116 + */ + +package drautomationservice + +import ( + "context" + "fmt" + "log" + + "github.com/hashicorp/terraform-plugin-sdk/v2/diag" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" + + "github.com/IBM-Cloud/terraform-provider-ibm/ibm/conns" + "github.com/IBM-Cloud/terraform-provider-ibm/ibm/flex" + "github.com/IBM/go-sdk-core/v5/core" + "github.ibm.com/DRAutomation/dra-go-sdk/drautomationservicev1" +) + +func ResourceIbmPdrValidateApikey() *schema.Resource { + return &schema.Resource{ + CreateContext: resourceIbmPdrValidateApikeyCreate, + ReadContext: resourceIbmPdrValidateApikeyRead, + UpdateContext: resourceIbmPdrValidateApikeyUpdate, + DeleteContext: resourceIbmPdrValidateApikeyDelete, + Importer: &schema.ResourceImporter{}, + + Schema: map[string]*schema.Schema{ + "instance_id": &schema.Schema{ + Type: schema.TypeString, + Required: true, + ForceNew: true, + Description: "instance id of instance to provision.", + }, + "accept_language": &schema.Schema{ + Type: schema.TypeString, + Optional: true, + Description: "The language requested for the return document.", + }, + "api_key": &schema.Schema{ + Type: schema.TypeString, + Required: true, + ForceNew: true, + Description: "api key", + }, + "if_none_match": &schema.Schema{ + Type: schema.TypeString, + Optional: true, + Description: "ETag for conditional requests (optional).", + }, + "description": &schema.Schema{ + Type: schema.TypeString, + Computed: true, + Description: "Validation result message.", + }, + "status": &schema.Schema{ + Type: schema.TypeString, + Computed: true, + Description: "Status of the API key.", + }, + "id": &schema.Schema{ + Type: schema.TypeString, + Computed: true, + Description: "Unique identifier of the API key.", + }, + "etag": &schema.Schema{ + Type: schema.TypeString, + Computed: true, + }, + }, + } +} + +func resourceIbmPdrValidateApikeyCreate(context context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { + drAutomationServiceClient, err := meta.(conns.ClientSession).DrAutomationServiceV1() + if err != nil { + tfErr := flex.DiscriminatedTerraformErrorf(err, err.Error(), "ibm_pdr_validate_apikey", "create", "initialize-client") + log.Printf("[DEBUG]\n%s", tfErr.GetDebugMessage()) + return tfErr.GetDiag() + } + + createServiceInstanceKeyValidationOptions := &drautomationservicev1.CreateServiceInstanceKeyValidationOptions{} + + createServiceInstanceKeyValidationOptions.SetInstanceID(d.Get("instance_id").(string)) + createServiceInstanceKeyValidationOptions.SetApiKey(d.Get("api_key").(string)) + if _, ok := d.GetOk("accept_language"); ok { + createServiceInstanceKeyValidationOptions.SetAcceptLanguage(d.Get("accept_language").(string)) + } + if _, ok := d.GetOk("if_none_match"); ok { + createServiceInstanceKeyValidationOptions.SetIfNoneMatch(d.Get("if_none_match").(string)) + } + + validationKeyResponse, _, err := drAutomationServiceClient.CreateServiceInstanceKeyValidationWithContext(context, createServiceInstanceKeyValidationOptions) + if err != nil { + tfErr := flex.TerraformErrorf(err, fmt.Sprintf("CreateServiceInstanceKeyValidationWithContext failed: %s", err.Error()), "ibm_pdr_validate_apikey", "create") + log.Printf("[DEBUG]\n%s", tfErr.GetDebugMessage()) + return tfErr.GetDiag() + } + + d.SetId(fmt.Sprintf("%s/%s", *createServiceInstanceKeyValidationOptions.InstanceID, *validationKeyResponse.ID)) + + return resourceIbmPdrValidateApikeyRead(context, d, meta) +} + +func resourceIbmPdrValidateApikeyRead(context context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { + if d.Id() == "" { + return nil + } + + drAutomationServiceClient, err := meta.(conns.ClientSession).DrAutomationServiceV1() + if err != nil { + tfErr := flex.DiscriminatedTerraformErrorf(err, err.Error(), "ibm_pdr_validate_apikey", "read", "initialize-client") + log.Printf("[DEBUG]\n%s", tfErr.GetDebugMessage()) + return tfErr.GetDiag() + } + + getServiceInstanceKeyV1Options := &drautomationservicev1.GetServiceInstanceKeyV1Options{} + + parts, err := flex.SepIdParts(d.Id(), "/") + if err != nil { + return flex.DiscriminatedTerraformErrorf(err, err.Error(), "ibm_pdr_validate_apikey", "read", "sep-id-parts").GetDiag() + } + + getServiceInstanceKeyV1Options.SetInstanceID(parts[0]) + getServiceInstanceKeyV1Options.SetInstanceID(parts[1]) + if _, ok := d.GetOk("accept_language"); ok { + getServiceInstanceKeyV1Options.SetAcceptLanguage(d.Get("accept_language").(string)) + } + if _, ok := d.GetOk("if_none_match"); ok { + getServiceInstanceKeyV1Options.SetIfNoneMatch(d.Get("if_none_match").(string)) + } + + validationKeyResponse, response, err := drAutomationServiceClient.GetServiceInstanceKeyV1WithContext(context, getServiceInstanceKeyV1Options) + if err != nil { + if response != nil && response.StatusCode == 404 { + d.SetId("") + return nil + } + tfErr := flex.TerraformErrorf(err, fmt.Sprintf("GetServiceInstanceKeyV1WithContext failed: %s", err.Error()), "ibm_pdr_validate_apikey", "read") + log.Printf("[DEBUG]\n%s", tfErr.GetDebugMessage()) + return tfErr.GetDiag() + } + + if !core.IsNil(validationKeyResponse.Description) { + if err = d.Set("description", validationKeyResponse.Description); err != nil { + err = fmt.Errorf("Error setting description: %s", err) + return flex.DiscriminatedTerraformErrorf(err, err.Error(), "ibm_pdr_validate_apikey", "read", "set-description").GetDiag() + } + } + if !core.IsNil(validationKeyResponse.Status) { + if err = d.Set("status", validationKeyResponse.Status); err != nil { + err = fmt.Errorf("Error setting status: %s", err) + return flex.DiscriminatedTerraformErrorf(err, err.Error(), "ibm_pdr_validate_apikey", "read", "set-status").GetDiag() + } + } + if !core.IsNil(validationKeyResponse.ID) { + if err = d.Set("instance_id", validationKeyResponse.ID); err != nil { + err = fmt.Errorf("Error setting instance_id: %s", err) + return flex.DiscriminatedTerraformErrorf(err, err.Error(), "ibm_pdr_validate_apikey", "read", "set-instance_id").GetDiag() + } + } + if err = d.Set("etag", response.Headers.Get("Etag")); err != nil { + return flex.DiscriminatedTerraformErrorf(err, fmt.Sprintf("Error setting etag: %s", err), "ibm_pdr_validate_apikey", "read", "set-etag").GetDiag() + } + + return nil +} + +func resourceIbmPdrValidateApikeyUpdate(context context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { + drAutomationServiceClient, err := meta.(conns.ClientSession).DrAutomationServiceV1() + if err != nil { + tfErr := flex.DiscriminatedTerraformErrorf(err, err.Error(), "ibm_pdr_validate_apikey", "update", "initialize-client") + log.Printf("[DEBUG]\n%s", tfErr.GetDebugMessage()) + return tfErr.GetDiag() + } + + replaceServiceInstanceApiKeyOptions := &drautomationservicev1.ReplaceServiceInstanceApiKeyOptions{} + + parts, err := flex.SepIdParts(d.Id(), "/") + if err != nil { + return flex.DiscriminatedTerraformErrorf(err, err.Error(), "ibm_pdr_validate_apikey", "update", "sep-id-parts").GetDiag() + } + + replaceServiceInstanceApiKeyOptions.SetInstanceID(parts[0]) + replaceServiceInstanceApiKeyOptions.SetInstanceID(parts[1]) + replaceServiceInstanceApiKeyOptions.SetInstanceID(d.Get("instance_id").(string)) + if _, ok := d.GetOk("accept_language"); ok { + replaceServiceInstanceApiKeyOptions.SetAcceptLanguage(d.Get("accept_language").(string)) + } + if _, ok := d.GetOk("if_none_match"); ok { + replaceServiceInstanceApiKeyOptions.SetIfNoneMatch(d.Get("if_none_match").(string)) + } + replaceServiceInstanceApiKeyOptions.SetApiKey(d.Get("api_key").(string)) + + _, _, err = drAutomationServiceClient.ReplaceServiceInstanceApiKeyWithContext(context, replaceServiceInstanceApiKeyOptions) + if err != nil { + tfErr := flex.TerraformErrorf(err, fmt.Sprintf("ReplaceServiceInstanceApiKeyWithContext failed: %s", err.Error()), "ibm_pdr_validate_apikey", "update") + log.Printf("[DEBUG]\n%s", tfErr.GetDebugMessage()) + return tfErr.GetDiag() + } + + return resourceIbmPdrValidateApikeyRead(context, d, meta) +} + +func resourceIbmPdrValidateApikeyDelete(context context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { + // This resource does not support a "delete" operation. + d.SetId("") + return nil +} diff --git a/ibm/service/drautomationservice/resource_ibm_pdr_validate_apikey_test.go b/ibm/service/drautomationservice/resource_ibm_pdr_validate_apikey_test.go new file mode 100644 index 0000000000..65bbcafe01 --- /dev/null +++ b/ibm/service/drautomationservice/resource_ibm_pdr_validate_apikey_test.go @@ -0,0 +1,161 @@ +// Copyright IBM Corp. 2025 All Rights Reserved. +// Licensed under the Mozilla Public License v2.0 + +package drautomationservice_test + +import ( + "fmt" + "testing" + + "github.com/hashicorp/terraform-plugin-testing/helper/acctest" + "github.com/hashicorp/terraform-plugin-testing/helper/resource" + "github.com/hashicorp/terraform-plugin-testing/terraform" + + acc "github.com/IBM-Cloud/terraform-provider-ibm/ibm/acctest" + "github.com/IBM-Cloud/terraform-provider-ibm/ibm/conns" + "github.com/IBM-Cloud/terraform-provider-ibm/ibm/flex" + "github.ibm.com/DRAutomation/dra-go-sdk/drautomationservicev1" +) + +func TestAccIbmPdrValidateApikeyBasic(t *testing.T) { + var conf drautomationservicev1.ValidationKeyResponse + instanceID := "crn:v1:staging:public:power-dr-automation:global:a/a09202c1bfb04ceebfb4a9fd38c87721:050ebe3b-13f4-4db8-8ece-501a3c13be0965822::" + + resource.Test(t, resource.TestCase{ + PreCheck: func() { acc.TestAccPreCheck(t) }, + Providers: acc.TestAccProviders, + CheckDestroy: testAccCheckIbmPdrValidateApikeyDestroy, + Steps: []resource.TestStep{ + resource.TestStep{ + Config: testAccCheckIbmPdrValidateApikeyConfigBasic(instanceID), + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckIbmPdrValidateApikeyExists("ibm_pdr_validate_apikey.pdr_validate_apikey_instance", conf), + resource.TestCheckResourceAttr("ibm_pdr_validate_apikey.pdr_validate_apikey_instance", "instance_id", instanceID), + ), + }, + }, + }) +} + +func TestAccIbmPdrValidateApikeyAllArgs(t *testing.T) { + var conf drautomationservicev1.ValidationKeyResponse + instanceID := "crn:v1:staging:public:power-dr-automation:global:a/a09202c1bfb04ceebfb4a9fd38c87721:050ebe3b-13f4-4db8-8ece-501a3c13be0965822::" + acceptLanguage := fmt.Sprintf("tf_accept_language_%d", acctest.RandIntRange(10, 100)) + ifNoneMatch := fmt.Sprintf("tf_if_none_match_%d", acctest.RandIntRange(10, 100)) + acceptLanguageUpdate := fmt.Sprintf("tf_accept_language_%d", acctest.RandIntRange(10, 100)) + ifNoneMatchUpdate := fmt.Sprintf("tf_if_none_match_%d", acctest.RandIntRange(10, 100)) + + resource.Test(t, resource.TestCase{ + PreCheck: func() { acc.TestAccPreCheck(t) }, + Providers: acc.TestAccProviders, + CheckDestroy: testAccCheckIbmPdrValidateApikeyDestroy, + Steps: []resource.TestStep{ + resource.TestStep{ + Config: testAccCheckIbmPdrValidateApikeyConfig(instanceID, acceptLanguage, ifNoneMatch), + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckIbmPdrValidateApikeyExists("ibm_pdr_validate_apikey.pdr_validate_apikey_instance", conf), + resource.TestCheckResourceAttr("ibm_pdr_validate_apikey.pdr_validate_apikey_instance", "instance_id", instanceID), + resource.TestCheckResourceAttr("ibm_pdr_validate_apikey.pdr_validate_apikey_instance", "accept_language", acceptLanguage), + resource.TestCheckResourceAttr("ibm_pdr_validate_apikey.pdr_validate_apikey_instance", "if_none_match", ifNoneMatch), + ), + }, + resource.TestStep{ + Config: testAccCheckIbmPdrValidateApikeyConfig(instanceID, acceptLanguageUpdate, ifNoneMatchUpdate), + Check: resource.ComposeAggregateTestCheckFunc( + resource.TestCheckResourceAttr("ibm_pdr_validate_apikey.pdr_validate_apikey_instance", "instance_id", instanceID), + resource.TestCheckResourceAttr("ibm_pdr_validate_apikey.pdr_validate_apikey_instance", "accept_language", acceptLanguageUpdate), + resource.TestCheckResourceAttr("ibm_pdr_validate_apikey.pdr_validate_apikey_instance", "if_none_match", ifNoneMatchUpdate), + ), + }, + resource.TestStep{ + ResourceName: "ibm_pdr_validate_apikey.pdr_validate_apikey", + ImportState: true, + ImportStateVerify: true, + }, + }, + }) +} + +func testAccCheckIbmPdrValidateApikeyConfigBasic(instanceID string) string { + return fmt.Sprintf(` + resource "ibm_pdr_validate_apikey" "pdr_validate_apikey_instance" { + instance_id = "%s" + api_key = "azGTysdgsvameQEAhya_1_fD" + } + `, instanceID) +} + +func testAccCheckIbmPdrValidateApikeyConfig(instanceID string, acceptLanguage string, ifNoneMatch string) string { + return fmt.Sprintf(` + + resource "ibm_pdr_validate_apikey" "pdr_validate_apikey_instance" { + instance_id = "%s" + api_key = "azGsdsdfTyameQEAhya_1_fD" + accept_language = "%s" + if_none_match = "%s" + } + `, instanceID, acceptLanguage, ifNoneMatch) +} + +func testAccCheckIbmPdrValidateApikeyExists(n string, obj drautomationservicev1.ValidationKeyResponse) resource.TestCheckFunc { + + return func(s *terraform.State) error { + rs, ok := s.RootModule().Resources[n] + if !ok { + return fmt.Errorf("Not found: %s", n) + } + + drAutomationServiceClient, err := acc.TestAccProvider.Meta().(conns.ClientSession).DrAutomationServiceV1() + if err != nil { + return err + } + + getServiceInstanceKeyV1Options := &drautomationservicev1.GetServiceInstanceKeyV1Options{} + + // parts, err := flex.SepIdParts(rs.Primary.ID, "/") + // if err != nil { + // return err + // } + + // getServiceInstanceKeyV1Options.SetInstanceID(parts[0]) + getServiceInstanceKeyV1Options.SetInstanceID(rs.Primary.ID) + + validationKeyResponse, _, err := drAutomationServiceClient.GetServiceInstanceKeyV1(getServiceInstanceKeyV1Options) + if err != nil { + return err + } + + obj = *validationKeyResponse + return nil + } +} + +func testAccCheckIbmPdrValidateApikeyDestroy(s *terraform.State) error { + drAutomationServiceClient, err := acc.TestAccProvider.Meta().(conns.ClientSession).DrAutomationServiceV1() + if err != nil { + return err + } + for _, rs := range s.RootModule().Resources { + if rs.Type != "ibm_pdr_validate_apikey" { + continue + } + + getServiceInstanceKeyV1Options := &drautomationservicev1.GetServiceInstanceKeyV1Options{} + + parts, err := flex.SepIdParts(rs.Primary.ID, "/") + if err != nil { + return err + } + getServiceInstanceKeyV1Options.SetInstanceID(fmt.Sprintf("%s/%s", parts[0], parts[1])) + // Try to find the key + _, response, err := drAutomationServiceClient.GetServiceInstanceKeyV1(getServiceInstanceKeyV1Options) + fmt.Println(response) + if err == nil { + return fmt.Errorf("pdr_validate_apikey still exists: %s", rs.Primary.ID) + } else if response.StatusCode != 404 { + return fmt.Errorf("Error checking for pdr_validate_apikey (%s) has been destroyed: %s", rs.Primary.ID, err) + } + } + + return nil +} From 413d1d3515d3b1648b28207396fce165b98010fb Mon Sep 17 00:00:00 2001 From: Mani-Raj-Langaru1 Date: Tue, 21 Oct 2025 12:00:56 -0400 Subject: [PATCH 02/13] Added latest modified Apis list --- ibm/provider/provider.go | 8 +- ibm/service/drautomationservice/README.md | 0 ...ta_source_ibm_pdr_get_deployment_status.go | 197 ------------------ ...urce_ibm_pdr_get_deployment_status_test.go | 54 ----- .../data_source_ibm_pdr_get_dr_locations.go | 12 +- ...ta_source_ibm_pdr_get_dr_locations_test.go | 5 +- ..._source_ibm_pdr_get_dr_summary_response.go | 18 +- ...ce_ibm_pdr_get_dr_summary_response_test.go | 12 +- .../data_source_ibm_pdr_get_event.go | 4 +- .../data_source_ibm_pdr_get_event_test.go | 2 +- .../data_source_ibm_pdr_get_events.go | 4 +- .../data_source_ibm_pdr_get_events_test.go | 2 +- ...a_source_ibm_pdr_get_machine_types_test.go | 3 +- ...data_source_ibm_pdr_get_managed_vm_list.go | 71 ++++--- ...source_ibm_pdr_get_managed_vm_list_test.go | 27 ++- .../data_source_ibm_pdr_last_operation.go | 6 +- ...ata_source_ibm_pdr_schematic_workspaces.go | 4 +- ...ource_ibm_pdr_schematic_workspaces_test.go | 10 +- ...ata_source_ibm_pdr_validate_clustertype.go | 110 ---------- ...ource_ibm_pdr_validate_clustertype_test.go | 43 ---- .../data_source_ibm_pdr_validate_proxyip.go | 125 ----------- ...ta_source_ibm_pdr_validate_proxyip_test.go | 47 ----- .../data_source_ibm_pdr_validate_workspace.go | 114 ---------- ..._source_ibm_pdr_validate_workspace_test.go | 47 ----- ...ata_source_ibm_pdr_workspace_custom_vpc.go | 26 +-- ...ource_ibm_pdr_workspace_custom_vpc_test.go | 15 +- ...data_source_ibm_pdr_workspace_schematic.go | 8 +- ...source_ibm_pdr_workspace_schematic_test.go | 13 +- .../resource_ibm_pdr_managedr.go | 43 ++-- .../resource_ibm_pdr_managedr_test.go | 18 +- .../resource_ibm_pdr_validate_apikey.go | 47 +++-- .../resource_ibm_pdr_validate_apikey_test.go | 10 +- 32 files changed, 201 insertions(+), 904 deletions(-) mode change 100755 => 100644 ibm/service/drautomationservice/README.md delete mode 100644 ibm/service/drautomationservice/data_source_ibm_pdr_get_deployment_status.go delete mode 100644 ibm/service/drautomationservice/data_source_ibm_pdr_get_deployment_status_test.go delete mode 100644 ibm/service/drautomationservice/data_source_ibm_pdr_validate_clustertype.go delete mode 100644 ibm/service/drautomationservice/data_source_ibm_pdr_validate_clustertype_test.go delete mode 100644 ibm/service/drautomationservice/data_source_ibm_pdr_validate_proxyip.go delete mode 100644 ibm/service/drautomationservice/data_source_ibm_pdr_validate_proxyip_test.go delete mode 100644 ibm/service/drautomationservice/data_source_ibm_pdr_validate_workspace.go delete mode 100644 ibm/service/drautomationservice/data_source_ibm_pdr_validate_workspace_test.go diff --git a/ibm/provider/provider.go b/ibm/provider/provider.go index 3a67cef93c..11b97562a3 100644 --- a/ibm/provider/provider.go +++ b/ibm/provider/provider.go @@ -1101,10 +1101,9 @@ func Provider() *schema.Provider { "ibm_logs_router_targets": logsrouting.DataSourceIBMLogsRouterTargets(), // DR Automation Service + "ibm_pdr_get_dr_summary_response": drautomationservice.DataSourceIbmPdrGetDrSummaryResponse(), "ibm_pdr_workspace_schematic": drautomationservice.DataSourceIbmPdrWorkspaceSchematic(), "ibm_pdr_workspace_custom_vpc": drautomationservice.DataSourceIbmPdrWorkspaceCustomVpc(), - "ibm_pdr_get_deployment_status": drautomationservice.DataSourceIbmPdrGetDeploymentStatus(), - "ibm_pdr_get_dr_summary_response": drautomationservice.DataSourceIbmPdrGetDrSummaryResponse(), "ibm_pdr_get_event": drautomationservice.DataSourceIbmPdrGetEvent(), "ibm_pdr_get_events": drautomationservice.DataSourceIbmPdrGetEvents(), "ibm_pdr_get_dr_locations": drautomationservice.DataSourceIbmPdrGetDrLocations(), @@ -1112,9 +1111,6 @@ func Provider() *schema.Provider { "ibm_pdr_get_managed_vm_list": drautomationservice.DataSourceIbmPdrGetManagedVmList(), "ibm_pdr_schematic_workspaces": drautomationservice.DataSourceIbmPdrSchematicWorkspaces(), "ibm_pdr_last_operation": drautomationservice.DataSourceIbmPdrLastOperation(), - "ibm_pdr_validate_clustertype": drautomationservice.DataSourceIbmPdrValidateClustertype(), - "ibm_pdr_validate_proxyip": drautomationservice.DataSourceIbmPdrValidateProxyip(), - "ibm_pdr_validate_workspace": drautomationservice.DataSourceIbmPdrValidateWorkspace(), }, ResourcesMap: map[string]*schema.Resource{ @@ -1786,7 +1782,7 @@ func Provider() *schema.Provider { "ibm_logs_router_tenant": logsrouting.ResourceIBMLogsRouterTenant(), // DR Automation Service - "ibm_pdr_managedr": drautomationservice.ResourceIbmPdrManagedr(), + "ibm_pdr_managedr": drautomationservice.ResourceIbmPdrManagedr(), "ibm_pdr_validate_apikey": drautomationservice.ResourceIbmPdrValidateApikey(), }, diff --git a/ibm/service/drautomationservice/README.md b/ibm/service/drautomationservice/README.md old mode 100755 new mode 100644 diff --git a/ibm/service/drautomationservice/data_source_ibm_pdr_get_deployment_status.go b/ibm/service/drautomationservice/data_source_ibm_pdr_get_deployment_status.go deleted file mode 100644 index 2e28ab7b90..0000000000 --- a/ibm/service/drautomationservice/data_source_ibm_pdr_get_deployment_status.go +++ /dev/null @@ -1,197 +0,0 @@ -// Copyright IBM Corp. 2025 All Rights Reserved. -// Licensed under the Mozilla Public License v2.0 - -/* - * IBM OpenAPI Terraform Generator Version: 3.105.0-3c13b041-20250605-193116 - */ - -package drautomationservice - -import ( - "context" - "fmt" - "log" - "time" - - "github.com/hashicorp/terraform-plugin-sdk/v2/diag" - "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" - - "github.com/IBM-Cloud/terraform-provider-ibm/ibm/conns" - "github.com/IBM-Cloud/terraform-provider-ibm/ibm/flex" - "github.com/IBM/go-sdk-core/v5/core" - "github.ibm.com/DRAutomation/dra-go-sdk/drautomationservicev1" -) - -func DataSourceIbmPdrGetDeploymentStatus() *schema.Resource { - return &schema.Resource{ - ReadContext: dataSourceIbmPdrGetDeploymentStatusRead, - - Schema: map[string]*schema.Schema{ - "instance_id": &schema.Schema{ - Type: schema.TypeString, - Required: true, - Description: "instance id of instance to provision.", - }, - "if_none_match": &schema.Schema{ - Type: schema.TypeString, - Optional: true, - Description: "ETag for conditional requests (optional).", - }, - "orch_ext_connectivity_status": &schema.Schema{ - Type: schema.TypeString, - Computed: true, - Description: "External connectivity status of the orchestrator cluster.", - }, - "orch_standby_node_addition_status": &schema.Schema{ - Type: schema.TypeString, - Computed: true, - Description: "Status of the standby node addition process.", - }, - "orchestrator_cluster_message": &schema.Schema{ - Type: schema.TypeString, - Computed: true, - Description: "Cluster status message.", - }, - "orchestrator_cluster_type": &schema.Schema{ - Type: schema.TypeString, - Computed: true, - Description: "Type of orchestrator cluster.", - }, - "orchestrator_config_status": &schema.Schema{ - Type: schema.TypeString, - Computed: true, - Description: "Configuration status of the orchestrator.", - }, - "orchestrator_group_leader": &schema.Schema{ - Type: schema.TypeString, - Optional: true, - Computed: true, - Description: "Name of the orchestrator acting as the cluster leader.", - }, - "orchestrator_name": &schema.Schema{ - Type: schema.TypeString, - Computed: true, - Description: "Name of the primary orchestrator.", - }, - "orchestrator_status": &schema.Schema{ - Type: schema.TypeString, - Computed: true, - Description: "Status of the primary orchestrator.", - }, - "schematic_workspace_name": &schema.Schema{ - Type: schema.TypeString, - Computed: true, - Description: "Name of the schematic workspace.", - }, - "schematic_workspace_status": &schema.Schema{ - Type: schema.TypeString, - Computed: true, - Description: "Status of the schematic workspace.", - }, - "ssh_key_name": &schema.Schema{ - Type: schema.TypeString, - Computed: true, - Description: "Name of the SSH key associated with the orchestrator.", - }, - "standby_orchestrator_name": &schema.Schema{ - Type: schema.TypeString, - Computed: true, - Description: "Name of the standby orchestrator.", - }, - "standby_orchestrator_status": &schema.Schema{ - Type: schema.TypeString, - Computed: true, - Description: "Status of the standby orchestrator.", - }, - }, - } -} - -func dataSourceIbmPdrGetDeploymentStatusRead(context context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { - drAutomationServiceClient, err := meta.(conns.ClientSession).DrAutomationServiceV1() - if err != nil { - tfErr := flex.DiscriminatedTerraformErrorf(err, err.Error(), "(Data) ibm_pdr_get_deployment_status", "read", "initialize-client") - log.Printf("[DEBUG]\n%s", tfErr.GetDebugMessage()) - return tfErr.GetDiag() - } - - getServiceInstanceDrDeploymentOptions := &drautomationservicev1.GetServiceInstanceDrDeploymentOptions{} - - getServiceInstanceDrDeploymentOptions.SetInstanceID(d.Get("instance_id").(string)) - if _, ok := d.GetOk("if_none_match"); ok { - getServiceInstanceDrDeploymentOptions.SetIfNoneMatch(d.Get("if_none_match").(string)) - } - - deploymentStatus, _, err := drAutomationServiceClient.GetServiceInstanceDrDeploymentWithContext(context, getServiceInstanceDrDeploymentOptions) - if err != nil { - tfErr := flex.TerraformErrorf(err, fmt.Sprintf("GetServiceInstanceDrDeploymentWithContext failed: %s", err.Error()), "(Data) ibm_pdr_get_deployment_status", "read") - log.Printf("[DEBUG]\n%s", tfErr.GetDebugMessage()) - return tfErr.GetDiag() - } - - d.SetId(dataSourceIbmPdrGetDeploymentStatusID(d)) - - if !core.IsNil(deploymentStatus.OrchExtConnectivityStatus) { - if err = d.Set("orch_ext_connectivity_status", deploymentStatus.OrchExtConnectivityStatus); err != nil { - return flex.DiscriminatedTerraformErrorf(err, fmt.Sprintf("Error setting orch_ext_connectivity_status: %s", err), "(Data) ibm_pdr_get_deployment_status", "read", "set-orch_ext_connectivity_status").GetDiag() - } - } - - if err = d.Set("orch_standby_node_addition_status", deploymentStatus.OrchStandbyNodeAdditionStatus); err != nil { - return flex.DiscriminatedTerraformErrorf(err, fmt.Sprintf("Error setting orch_standby_node_addition_status: %s", err), "(Data) ibm_pdr_get_deployment_status", "read", "set-orch_standby_node_addition_status").GetDiag() - } - - if err = d.Set("orchestrator_cluster_message", deploymentStatus.OrchestratorClusterMessage); err != nil { - return flex.DiscriminatedTerraformErrorf(err, fmt.Sprintf("Error setting orchestrator_cluster_message: %s", err), "(Data) ibm_pdr_get_deployment_status", "read", "set-orchestrator_cluster_message").GetDiag() - } - - if err = d.Set("orchestrator_cluster_type", deploymentStatus.OrchestratorClusterType); err != nil { - return flex.DiscriminatedTerraformErrorf(err, fmt.Sprintf("Error setting orchestrator_cluster_type: %s", err), "(Data) ibm_pdr_get_deployment_status", "read", "set-orchestrator_cluster_type").GetDiag() - } - - if err = d.Set("orchestrator_config_status", deploymentStatus.OrchestratorConfigStatus); err != nil { - return flex.DiscriminatedTerraformErrorf(err, fmt.Sprintf("Error setting orchestrator_config_status: %s", err), "(Data) ibm_pdr_get_deployment_status", "read", "set-orchestrator_config_status").GetDiag() - } - if !core.IsNil(deploymentStatus.OrchestratorGroupLeader) { - if err = d.Set("orchestrator_group_leader", deploymentStatus.OrchestratorGroupLeader); err != nil { - return flex.DiscriminatedTerraformErrorf(err, fmt.Sprintf("Error setting orchestrator_group_leader: %s", err), "(Data) ibm_pdr_get_deployment_status", "read", "set-orchestrator_group_leader").GetDiag() - } - } else { - d.Set("orchestrator_group_leader", "") - } - - if err = d.Set("orchestrator_name", deploymentStatus.OrchestratorName); err != nil { - return flex.DiscriminatedTerraformErrorf(err, fmt.Sprintf("Error setting orchestrator_name: %s", err), "(Data) ibm_pdr_get_deployment_status", "read", "set-orchestrator_name").GetDiag() - } - - if err = d.Set("orchestrator_status", deploymentStatus.OrchestratorStatus); err != nil { - return flex.DiscriminatedTerraformErrorf(err, fmt.Sprintf("Error setting orchestrator_status: %s", err), "(Data) ibm_pdr_get_deployment_status", "read", "set-orchestrator_status").GetDiag() - } - - if err = d.Set("schematic_workspace_name", deploymentStatus.SchematicWorkspaceName); err != nil { - return flex.DiscriminatedTerraformErrorf(err, fmt.Sprintf("Error setting schematic_workspace_name: %s", err), "(Data) ibm_pdr_get_deployment_status", "read", "set-schematic_workspace_name").GetDiag() - } - - if err = d.Set("schematic_workspace_status", deploymentStatus.SchematicWorkspaceStatus); err != nil { - return flex.DiscriminatedTerraformErrorf(err, fmt.Sprintf("Error setting schematic_workspace_status: %s", err), "(Data) ibm_pdr_get_deployment_status", "read", "set-schematic_workspace_status").GetDiag() - } - - if err = d.Set("ssh_key_name", deploymentStatus.SshKeyName); err != nil { - return flex.DiscriminatedTerraformErrorf(err, fmt.Sprintf("Error setting ssh_key_name: %s", err), "(Data) ibm_pdr_get_deployment_status", "read", "set-ssh_key_name").GetDiag() - } - - if err = d.Set("standby_orchestrator_name", deploymentStatus.StandbyOrchestratorName); err != nil { - return flex.DiscriminatedTerraformErrorf(err, fmt.Sprintf("Error setting standby_orchestrator_name: %s", err), "(Data) ibm_pdr_get_deployment_status", "read", "set-standby_orchestrator_name").GetDiag() - } - - if err = d.Set("standby_orchestrator_status", deploymentStatus.StandbyOrchestratorStatus); err != nil { - return flex.DiscriminatedTerraformErrorf(err, fmt.Sprintf("Error setting standby_orchestrator_status: %s", err), "(Data) ibm_pdr_get_deployment_status", "read", "set-standby_orchestrator_status").GetDiag() - } - - return nil -} - -// dataSourceIbmPdrGetDeploymentStatusID returns a reasonable ID for the list. -func dataSourceIbmPdrGetDeploymentStatusID(d *schema.ResourceData) string { - return time.Now().UTC().String() -} diff --git a/ibm/service/drautomationservice/data_source_ibm_pdr_get_deployment_status_test.go b/ibm/service/drautomationservice/data_source_ibm_pdr_get_deployment_status_test.go deleted file mode 100644 index 50a3455ec1..0000000000 --- a/ibm/service/drautomationservice/data_source_ibm_pdr_get_deployment_status_test.go +++ /dev/null @@ -1,54 +0,0 @@ -// Copyright IBM Corp. 2025 All Rights Reserved. -// Licensed under the Mozilla Public License v2.0 - -/* - * IBM OpenAPI Terraform Generator Version: 3.105.0-3c13b041-20250605-193116 -*/ - -package drautomationservice_test - -import ( - "fmt" - "testing" - - "github.com/hashicorp/terraform-plugin-testing/helper/resource" - - acc "github.com/IBM-Cloud/terraform-provider-ibm/ibm/acctest" -) - -func TestAccIbmPdrGetDeploymentStatusDataSourceBasic(t *testing.T) { - resource.Test(t, resource.TestCase{ - PreCheck: func() { acc.TestAccPreCheck(t) }, - Providers: acc.TestAccProviders, - Steps: []resource.TestStep{ - resource.TestStep{ - Config: testAccCheckIbmPdrGetDeploymentStatusDataSourceConfigBasic(), - Check: resource.ComposeTestCheckFunc( - resource.TestCheckResourceAttrSet("data.ibm_pdr_get_deployment_status.pdr_get_deployment_status_instance", "id"), - resource.TestCheckResourceAttrSet("data.ibm_pdr_get_deployment_status.pdr_get_deployment_status_instance", "instance_id"), - resource.TestCheckResourceAttrSet("data.ibm_pdr_get_deployment_status.pdr_get_deployment_status_instance", "orch_standby_node_addition_status"), - resource.TestCheckResourceAttrSet("data.ibm_pdr_get_deployment_status.pdr_get_deployment_status_instance", "orchestrator_cluster_message"), - resource.TestCheckResourceAttrSet("data.ibm_pdr_get_deployment_status.pdr_get_deployment_status_instance", "orchestrator_cluster_type"), - resource.TestCheckResourceAttrSet("data.ibm_pdr_get_deployment_status.pdr_get_deployment_status_instance", "orchestrator_config_status"), - resource.TestCheckResourceAttrSet("data.ibm_pdr_get_deployment_status.pdr_get_deployment_status_instance", "orchestrator_group_leader"), - resource.TestCheckResourceAttrSet("data.ibm_pdr_get_deployment_status.pdr_get_deployment_status_instance", "orchestrator_name"), - resource.TestCheckResourceAttrSet("data.ibm_pdr_get_deployment_status.pdr_get_deployment_status_instance", "orchestrator_status"), - resource.TestCheckResourceAttrSet("data.ibm_pdr_get_deployment_status.pdr_get_deployment_status_instance", "schematic_workspace_name"), - resource.TestCheckResourceAttrSet("data.ibm_pdr_get_deployment_status.pdr_get_deployment_status_instance", "schematic_workspace_status"), - resource.TestCheckResourceAttrSet("data.ibm_pdr_get_deployment_status.pdr_get_deployment_status_instance", "ssh_key_name"), - resource.TestCheckResourceAttrSet("data.ibm_pdr_get_deployment_status.pdr_get_deployment_status_instance", "standby_orchestrator_name"), - resource.TestCheckResourceAttrSet("data.ibm_pdr_get_deployment_status.pdr_get_deployment_status_instance", "standby_orchestrator_status"), - ), - }, - }, - }) -} - -func testAccCheckIbmPdrGetDeploymentStatusDataSourceConfigBasic() string { - return fmt.Sprintf(` - data "ibm_pdr_get_deployment_status" "pdr_get_deployment_status_instance" { - instance_id = "crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::" - } - `) -} - diff --git a/ibm/service/drautomationservice/data_source_ibm_pdr_get_dr_locations.go b/ibm/service/drautomationservice/data_source_ibm_pdr_get_dr_locations.go index 38445c52fd..5edfdaae97 100644 --- a/ibm/service/drautomationservice/data_source_ibm_pdr_get_dr_locations.go +++ b/ibm/service/drautomationservice/data_source_ibm_pdr_get_dr_locations.go @@ -72,19 +72,19 @@ func dataSourceIbmPdrGetDrLocationsRead(context context.Context, d *schema.Resou return tfErr.GetDiag() } - getDrLocationOptions := &drautomationservicev1.GetDrLocationOptions{} + getDrLocationsOptions := &drautomationservicev1.GetDrLocationsOptions{} - getDrLocationOptions.SetInstanceID(d.Get("instance_id").(string)) + getDrLocationsOptions.SetInstanceID(d.Get("instance_id").(string)) if _, ok := d.GetOk("accept_language"); ok { - getDrLocationOptions.SetAcceptLanguage(d.Get("accept_language").(string)) + getDrLocationsOptions.SetAcceptLanguage(d.Get("accept_language").(string)) } if _, ok := d.GetOk("if_none_match"); ok { - getDrLocationOptions.SetIfNoneMatch(d.Get("if_none_match").(string)) + getDrLocationsOptions.SetIfNoneMatch(d.Get("if_none_match").(string)) } - getDrLocationsResponse, _, err := drAutomationServiceClient.GetDrLocationWithContext(context, getDrLocationOptions) + getDrLocationsResponse, _, err := drAutomationServiceClient.GetDrLocationsWithContext(context, getDrLocationsOptions) if err != nil { - tfErr := flex.TerraformErrorf(err, fmt.Sprintf("GetDrLocationWithContext failed: %s", err.Error()), "(Data) ibm_pdr_get_dr_locations", "read") + tfErr := flex.TerraformErrorf(err, fmt.Sprintf("GetDrLocationsWithContext failed: %s", err.Error()), "(Data) ibm_pdr_get_dr_locations", "read") log.Printf("[DEBUG]\n%s", tfErr.GetDebugMessage()) return tfErr.GetDiag() } diff --git a/ibm/service/drautomationservice/data_source_ibm_pdr_get_dr_locations_test.go b/ibm/service/drautomationservice/data_source_ibm_pdr_get_dr_locations_test.go index 68a77e2c5d..d0707b268b 100644 --- a/ibm/service/drautomationservice/data_source_ibm_pdr_get_dr_locations_test.go +++ b/ibm/service/drautomationservice/data_source_ibm_pdr_get_dr_locations_test.go @@ -3,7 +3,7 @@ /* * IBM OpenAPI Terraform Generator Version: 3.105.0-3c13b041-20250605-193116 - */ +*/ package drautomationservice_test @@ -13,11 +13,11 @@ import ( "github.com/hashicorp/terraform-plugin-testing/helper/resource" - acc "github.com/IBM-Cloud/terraform-provider-ibm/ibm/acctest" "github.com/IBM-Cloud/terraform-provider-ibm/ibm/service/drautomationservice" "github.com/IBM/go-sdk-core/v5/core" "github.com/stretchr/testify/assert" "github.ibm.com/DRAutomation/dra-go-sdk/drautomationservicev1" + acc "github.com/IBM-Cloud/terraform-provider-ibm/ibm/acctest" ) func TestAccIbmPdrGetDrLocationsDataSourceBasic(t *testing.T) { @@ -45,6 +45,7 @@ func testAccCheckIbmPdrGetDrLocationsDataSourceConfigBasic() string { `) } + func TestDataSourceIbmPdrGetDrLocationsDrLocationToMap(t *testing.T) { checkResult := func(result map[string]interface{}) { model := make(map[string]interface{}) diff --git a/ibm/service/drautomationservice/data_source_ibm_pdr_get_dr_summary_response.go b/ibm/service/drautomationservice/data_source_ibm_pdr_get_dr_summary_response.go index d83b872067..769c940649 100644 --- a/ibm/service/drautomationservice/data_source_ibm_pdr_get_dr_summary_response.go +++ b/ibm/service/drautomationservice/data_source_ibm_pdr_get_dr_summary_response.go @@ -3,7 +3,7 @@ /* * IBM OpenAPI Terraform Generator Version: 3.105.0-3c13b041-20250605-193116 -*/ + */ package drautomationservice @@ -258,8 +258,8 @@ func dataSourceIbmPdrGetDrSummaryResponseRead(context context.Context, d *schema d.SetId(dataSourceIbmPdrGetDrSummaryResponseID(d)) - convertedMap := make(map[string]interface{}, len(drAutomationGetSummaryResponse.ManagedVmList)) - for k, v := range drAutomationGetSummaryResponse.ManagedVmList { + convertedMap := make(map[string]interface{}, len(drAutomationGetSummaryResponse.ManagedVMList)) + for k, v := range drAutomationGetSummaryResponse.ManagedVMList { convertedMap[k] = v } if err = d.Set("managed_vm_list", flex.Flatten(convertedMap)); err != nil { @@ -306,30 +306,30 @@ func DataSourceIbmPdrGetDrSummaryResponseOrchestratorDetailsToMap(model *drautom modelMap["orchestrator_name"] = *model.OrchestratorName modelMap["orchestrator_status"] = *model.OrchestratorStatus modelMap["orchestrator_workspace_name"] = *model.OrchestratorWorkspaceName - modelMap["proxy_ip"] = *model.ProxyIp + modelMap["proxy_ip"] = *model.ProxyIP modelMap["schematic_workspace_name"] = *model.SchematicWorkspaceName modelMap["schematic_workspace_status"] = *model.SchematicWorkspaceStatus - modelMap["ssh_key_name"] = *model.SshKeyName + modelMap["ssh_key_name"] = *model.SSHKeyName modelMap["standby_orchestrator_name"] = *model.StandbyOrchestratorName modelMap["standby_orchestrator_status"] = *model.StandbyOrchestratorStatus modelMap["standby_orchestrator_workspace_name"] = *model.StandbyOrchestratorWorkspaceName modelMap["transit_gateway_name"] = *model.TransitGatewayName - modelMap["vpc_name"] = *model.VpcName + modelMap["vpc_name"] = *model.VPCName return modelMap, nil } func DataSourceIbmPdrGetDrSummaryResponseServiceDetailsToMap(model *drautomationservicev1.ServiceDetails) (map[string]interface{}, error) { modelMap := make(map[string]interface{}) - modelMap["crn"] = *model.Crn + modelMap["crn"] = *model.CRN modelMap["deployment_name"] = *model.DeploymentName modelMap["description"] = *model.Description modelMap["is_ksys_ha"] = *model.IsKsysHa - modelMap["primary_ip_address"] = *model.PrimaryIpAddress + modelMap["primary_ip_address"] = *model.PrimaryIPAddress modelMap["primary_orchestrator_dashboard_url"] = *model.PrimaryOrchestratorDashboardURL modelMap["recovery_location"] = *model.RecoveryLocation modelMap["resource_group"] = *model.ResourceGroup modelMap["standby_description"] = *model.StandbyDescription - modelMap["standby_ip_address"] = *model.StandbyIpAddress + modelMap["standby_ip_address"] = *model.StandbyIPAddress modelMap["standby_orchestrator_dashboard_url"] = *model.StandbyOrchestratorDashboardURL modelMap["standby_status"] = *model.StandbyStatus modelMap["status"] = *model.Status diff --git a/ibm/service/drautomationservice/data_source_ibm_pdr_get_dr_summary_response_test.go b/ibm/service/drautomationservice/data_source_ibm_pdr_get_dr_summary_response_test.go index 0c7d136fd5..22573842d3 100644 --- a/ibm/service/drautomationservice/data_source_ibm_pdr_get_dr_summary_response_test.go +++ b/ibm/service/drautomationservice/data_source_ibm_pdr_get_dr_summary_response_test.go @@ -84,15 +84,15 @@ func TestDataSourceIbmPdrGetDrSummaryResponseOrchestratorDetailsToMap(t *testing model.OrchestratorName = core.StringPtr("testString") model.OrchestratorStatus = core.StringPtr("testString") model.OrchestratorWorkspaceName = core.StringPtr("testString") - model.ProxyIp = core.StringPtr("testString") + model.ProxyIP = core.StringPtr("testString") model.SchematicWorkspaceName = core.StringPtr("testString") model.SchematicWorkspaceStatus = core.StringPtr("testString") - model.SshKeyName = core.StringPtr("testString") + model.SSHKeyName = core.StringPtr("testString") model.StandbyOrchestratorName = core.StringPtr("testString") model.StandbyOrchestratorStatus = core.StringPtr("testString") model.StandbyOrchestratorWorkspaceName = core.StringPtr("testString") model.TransitGatewayName = core.StringPtr("testString") - model.VpcName = core.StringPtr("testString") + model.VPCName = core.StringPtr("testString") result, err := drautomationservice.DataSourceIbmPdrGetDrSummaryResponseOrchestratorDetailsToMap(model) assert.Nil(t, err) @@ -120,16 +120,16 @@ func TestDataSourceIbmPdrGetDrSummaryResponseServiceDetailsToMap(t *testing.T) { } model := new(drautomationservicev1.ServiceDetails) - model.Crn = core.StringPtr("testString") + model.CRN = core.StringPtr("testString") model.DeploymentName = core.StringPtr("testString") model.Description = core.StringPtr("testString") model.IsKsysHa = core.BoolPtr(true) - model.PrimaryIpAddress = core.StringPtr("testString") + model.PrimaryIPAddress = core.StringPtr("testString") model.PrimaryOrchestratorDashboardURL = core.StringPtr("testString") model.RecoveryLocation = core.StringPtr("testString") model.ResourceGroup = core.StringPtr("testString") model.StandbyDescription = core.StringPtr("testString") - model.StandbyIpAddress = core.StringPtr("testString") + model.StandbyIPAddress = core.StringPtr("testString") model.StandbyOrchestratorDashboardURL = core.StringPtr("testString") model.StandbyStatus = core.StringPtr("testString") model.Status = core.StringPtr("testString") diff --git a/ibm/service/drautomationservice/data_source_ibm_pdr_get_event.go b/ibm/service/drautomationservice/data_source_ibm_pdr_get_event.go index 5122994db1..0822e860b4 100644 --- a/ibm/service/drautomationservice/data_source_ibm_pdr_get_event.go +++ b/ibm/service/drautomationservice/data_source_ibm_pdr_get_event.go @@ -158,8 +158,8 @@ func dataSourceIbmPdrGetEventRead(context context.Context, d *schema.ResourceDat return flex.DiscriminatedTerraformErrorf(err, fmt.Sprintf("Error setting action: %s", err), "(Data) ibm_pdr_get_event", "read", "set-action").GetDiag() } - if !core.IsNil(event.ApiSource) { - if err = d.Set("api_source", event.ApiSource); err != nil { + if !core.IsNil(event.APISource) { + if err = d.Set("api_source", event.APISource); err != nil { return flex.DiscriminatedTerraformErrorf(err, fmt.Sprintf("Error setting api_source: %s", err), "(Data) ibm_pdr_get_event", "read", "set-api_source").GetDiag() } } diff --git a/ibm/service/drautomationservice/data_source_ibm_pdr_get_event_test.go b/ibm/service/drautomationservice/data_source_ibm_pdr_get_event_test.go index 10ed3f36f2..a21e6ef1ae 100644 --- a/ibm/service/drautomationservice/data_source_ibm_pdr_get_event_test.go +++ b/ibm/service/drautomationservice/data_source_ibm_pdr_get_event_test.go @@ -47,7 +47,7 @@ func testAccCheckIbmPdrGetEventDataSourceConfigBasic() string { return fmt.Sprintf(` data "ibm_pdr_get_event" "pdr_get_event_instance" { provision_id = "crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::" - event_id = "1c22aa1c-5ec6-438d-b11a-3984dab6d438" + event_id = "00116b2a-9326-4024-839e-fb5364b76898" } `) } diff --git a/ibm/service/drautomationservice/data_source_ibm_pdr_get_events.go b/ibm/service/drautomationservice/data_source_ibm_pdr_get_events.go index 2ae86d7aa0..e3d06e1080 100644 --- a/ibm/service/drautomationservice/data_source_ibm_pdr_get_events.go +++ b/ibm/service/drautomationservice/data_source_ibm_pdr_get_events.go @@ -208,8 +208,8 @@ func dataSourceIbmPdrGetEventsID(d *schema.ResourceData) string { func DataSourceIbmPdrGetEventsEventToMap(model *drautomationservicev1.Event) (map[string]interface{}, error) { modelMap := make(map[string]interface{}) modelMap["action"] = *model.Action - if model.ApiSource != nil { - modelMap["api_source"] = *model.ApiSource + if model.APISource != nil { + modelMap["api_source"] = *model.APISource } modelMap["event_id"] = *model.EventID modelMap["level"] = *model.Level diff --git a/ibm/service/drautomationservice/data_source_ibm_pdr_get_events_test.go b/ibm/service/drautomationservice/data_source_ibm_pdr_get_events_test.go index 55e66390d1..25a73d3c5c 100644 --- a/ibm/service/drautomationservice/data_source_ibm_pdr_get_events_test.go +++ b/ibm/service/drautomationservice/data_source_ibm_pdr_get_events_test.go @@ -79,7 +79,7 @@ func TestDataSourceIbmPdrGetEventsEventToMap(t *testing.T) { model := new(drautomationservicev1.Event) model.Action = core.StringPtr("create") - model.ApiSource = core.StringPtr("dr-automation-api") + model.APISource = core.StringPtr("dr-automation-api") model.EventID = core.StringPtr("1cecfe43-43cd-4b1b-86be-30c2d3d2a25f") model.Level = core.StringPtr("info") model.Message = core.StringPtr("Service Instance created successfully") diff --git a/ibm/service/drautomationservice/data_source_ibm_pdr_get_machine_types_test.go b/ibm/service/drautomationservice/data_source_ibm_pdr_get_machine_types_test.go index 02b6b88fe7..7c8e891b72 100644 --- a/ibm/service/drautomationservice/data_source_ibm_pdr_get_machine_types_test.go +++ b/ibm/service/drautomationservice/data_source_ibm_pdr_get_machine_types_test.go @@ -3,7 +3,7 @@ /* * IBM OpenAPI Terraform Generator Version: 3.105.0-3c13b041-20250605-193116 - */ +*/ package drautomationservice_test @@ -42,3 +42,4 @@ func testAccCheckIbmPdrGetMachineTypesDataSourceConfigBasic() string { } `) } + diff --git a/ibm/service/drautomationservice/data_source_ibm_pdr_get_managed_vm_list.go b/ibm/service/drautomationservice/data_source_ibm_pdr_get_managed_vm_list.go index 319eb281ae..0fdef33073 100644 --- a/ibm/service/drautomationservice/data_source_ibm_pdr_get_managed_vm_list.go +++ b/ibm/service/drautomationservice/data_source_ibm_pdr_get_managed_vm_list.go @@ -3,7 +3,7 @@ /* * IBM OpenAPI Terraform Generator Version: 3.105.0-3c13b041-20250605-193116 -*/ + */ package drautomationservice @@ -18,6 +18,7 @@ import ( "github.com/IBM-Cloud/terraform-provider-ibm/ibm/conns" "github.com/IBM-Cloud/terraform-provider-ibm/ibm/flex" + "github.com/IBM/go-sdk-core/v5/core" "github.ibm.com/DRAutomation/dra-go-sdk/drautomationservicev1" ) @@ -42,22 +43,10 @@ func DataSourceIbmPdrGetManagedVmList() *schema.Resource { Description: "ETag for conditional requests (optional).", }, "managed_vms": &schema.Schema{ - Type: schema.TypeList, - Computed: true, - Description: "List of managed VMs associated with the service instance.", - Elem: &schema.Resource{ - Schema: map[string]*schema.Schema{ - "vm_id": &schema.Schema{ - Type: schema.TypeString, - Computed: true, - Description: "Unique identifier of the VM.", - }, - "vm_name": &schema.Schema{ - Type: schema.TypeString, - Computed: true, - Description: "Name of the VM.", - }, - }, + Type: schema.TypeMap, + Computed: true, + Elem: &schema.Schema{ + Type: schema.TypeString, }, }, }, @@ -72,7 +61,7 @@ func dataSourceIbmPdrGetManagedVmListRead(context context.Context, d *schema.Res return tfErr.GetDiag() } - getDrManagedVmOptions := &drautomationservicev1.GetDrManagedVmOptions{} + getDrManagedVmOptions := &drautomationservicev1.GetDrManagedVMOptions{} getDrManagedVmOptions.SetInstanceID(d.Get("instance_id").(string)) if _, ok := d.GetOk("accept_language"); ok { @@ -82,7 +71,7 @@ func dataSourceIbmPdrGetManagedVmListRead(context context.Context, d *schema.Res getDrManagedVmOptions.SetIfNoneMatch(d.Get("if_none_match").(string)) } - managedVmListResponse, _, err := drAutomationServiceClient.GetDrManagedVmWithContext(context, getDrManagedVmOptions) + managedVmMapResponse, _, err := drAutomationServiceClient.GetDrManagedVMWithContext(context, getDrManagedVmOptions) if err != nil { tfErr := flex.TerraformErrorf(err, fmt.Sprintf("GetDrManagedVmWithContext failed: %s", err.Error()), "(Data) ibm_pdr_get_managed_vm_list", "read") log.Printf("[DEBUG]\n%s", tfErr.GetDebugMessage()) @@ -91,16 +80,14 @@ func dataSourceIbmPdrGetManagedVmListRead(context context.Context, d *schema.Res d.SetId(dataSourceIbmPdrGetManagedVmListID(d)) - managedVms := []map[string]interface{}{} - for _, managedVmsItem := range managedVmListResponse.ManagedVms { - managedVmsItemMap, err := DataSourceIbmPdrGetManagedVmListManagedVmListToMap(&managedVmsItem) // #nosec G601 - if err != nil { - return flex.DiscriminatedTerraformErrorf(err, err.Error(), "(Data) ibm_pdr_get_managed_vm_list", "read", "managed_vms-to-map").GetDiag() + if !core.IsNil(managedVmMapResponse.ManagedVms) { + convertedMap := make(map[string]interface{}, len(managedVmMapResponse.ManagedVms)) + for k, v := range managedVmMapResponse.ManagedVms { + convertedMap[k] = v + } + if err = d.Set("managed_vms", flex.Flatten(convertedMap)); err != nil { + return flex.DiscriminatedTerraformErrorf(err, fmt.Sprintf("Error setting managed_vms: %s", err), "(Data) ibm_pdr_get_managed_vm_list", "read", "set-managed_vms").GetDiag() } - managedVms = append(managedVms, managedVmsItemMap) - } - if err = d.Set("managed_vms", managedVms); err != nil { - return flex.DiscriminatedTerraformErrorf(err, fmt.Sprintf("Error setting managed_vms: %s", err), "(Data) ibm_pdr_get_managed_vm_list", "read", "set-managed_vms").GetDiag() } return nil @@ -111,13 +98,31 @@ func dataSourceIbmPdrGetManagedVmListID(d *schema.ResourceData) string { return time.Now().UTC().String() } -func DataSourceIbmPdrGetManagedVmListManagedVmListToMap(model *drautomationservicev1.ManagedVmList) (map[string]interface{}, error) { +func DataSourceIbmPdrGetManagedVmListManagedVmDetailsToMap(model *drautomationservicev1.ManagedVMDetails) (map[string]interface{}, error) { modelMap := make(map[string]interface{}) - if model.VmID != nil { - modelMap["vm_id"] = *model.VmID + if model.Core != nil { + modelMap["core"] = *model.Core + } + if model.DrAverageTime != nil { + modelMap["dr_average_time"] = *model.DrAverageTime + } + if model.DrRegion != nil { + modelMap["dr_region"] = *model.DrRegion + } + if model.Memory != nil { + modelMap["memory"] = *model.Memory + } + if model.Region != nil { + modelMap["region"] = *model.Region + } + if model.VMName != nil { + modelMap["vm_name"] = *model.VMName + } + if model.WorkgroupName != nil { + modelMap["workgroup_name"] = *model.WorkgroupName } - if model.VmName != nil { - modelMap["vm_name"] = *model.VmName + if model.WorkspaceName != nil { + modelMap["workspace_name"] = *model.WorkspaceName } return modelMap, nil } diff --git a/ibm/service/drautomationservice/data_source_ibm_pdr_get_managed_vm_list_test.go b/ibm/service/drautomationservice/data_source_ibm_pdr_get_managed_vm_list_test.go index a0644e2606..be3f0f5874 100644 --- a/ibm/service/drautomationservice/data_source_ibm_pdr_get_managed_vm_list_test.go +++ b/ibm/service/drautomationservice/data_source_ibm_pdr_get_managed_vm_list_test.go @@ -30,7 +30,6 @@ func TestAccIbmPdrGetManagedVmListDataSourceBasic(t *testing.T) { Check: resource.ComposeTestCheckFunc( resource.TestCheckResourceAttrSet("data.ibm_pdr_get_managed_vm_list.pdr_get_managed_vm_list_instance", "id"), resource.TestCheckResourceAttrSet("data.ibm_pdr_get_managed_vm_list.pdr_get_managed_vm_list_instance", "instance_id"), - resource.TestCheckResourceAttrSet("data.ibm_pdr_get_managed_vm_list.pdr_get_managed_vm_list_instance", "managed_vms.#"), ), }, }, @@ -45,20 +44,32 @@ func testAccCheckIbmPdrGetManagedVmListDataSourceConfigBasic() string { `) } -func TestDataSourceIbmPdrGetManagedVmListManagedVmListToMap(t *testing.T) { +func TestDataSourceIbmPdrGetManagedVmListManagedVmDetailsToMap(t *testing.T) { checkResult := func(result map[string]interface{}) { model := make(map[string]interface{}) - model["vm_id"] = "5f4f7dd3-6d44-4086-9950-933bd550e24d" - model["vm_name"] = "abc-aix-vm1" + model["core"] = "0.50" + model["dr_average_time"] = "10" + model["dr_region"] = "nyc02" + model["memory"] = "4" + model["region"] = "lon04" + model["vm_name"] = "example_vm" + model["workgroup_name"] = "Example_Workgroup" + model["workspace_name"] = "Example_Workspace" assert.Equal(t, result, model) } - model := new(drautomationservicev1.ManagedVmList) - model.VmID = core.StringPtr("5f4f7dd3-6d44-4086-9950-933bd550e24d") - model.VmName = core.StringPtr("abc-aix-vm1") + model := new(drautomationservicev1.ManagedVMDetails) + model.Core = core.StringPtr("0.50") + model.DrAverageTime = core.StringPtr("10") + model.DrRegion = core.StringPtr("nyc02") + model.Memory = core.StringPtr("4") + model.Region = core.StringPtr("lon04") + model.VMName = core.StringPtr("example_vm") + model.WorkgroupName = core.StringPtr("Example_Workgroup") + model.WorkspaceName = core.StringPtr("Example_Workspace") - result, err := drautomationservice.DataSourceIbmPdrGetManagedVmListManagedVmListToMap(model) + result, err := drautomationservice.DataSourceIbmPdrGetManagedVmListManagedVmDetailsToMap(model) assert.Nil(t, err) checkResult(result) } diff --git a/ibm/service/drautomationservice/data_source_ibm_pdr_last_operation.go b/ibm/service/drautomationservice/data_source_ibm_pdr_last_operation.go index 71f0dffcd1..4f25b8158f 100644 --- a/ibm/service/drautomationservice/data_source_ibm_pdr_last_operation.go +++ b/ibm/service/drautomationservice/data_source_ibm_pdr_last_operation.go @@ -153,7 +153,7 @@ func dataSourceIbmPdrLastOperationRead(context context.Context, d *schema.Resour d.SetId(dataSourceIbmPdrLastOperationID(d)) - if err = d.Set("crn", serviceInstanceStatus.Crn); err != nil { + if err = d.Set("crn", serviceInstanceStatus.CRN); err != nil { return flex.DiscriminatedTerraformErrorf(err, fmt.Sprintf("Error setting crn: %s", err), "(Data) ibm_pdr_last_operation", "read", "set-crn").GetDiag() } @@ -187,7 +187,7 @@ func dataSourceIbmPdrLastOperationRead(context context.Context, d *schema.Resour return flex.DiscriminatedTerraformErrorf(err, fmt.Sprintf("Error setting primary_description: %s", err), "(Data) ibm_pdr_last_operation", "read", "set-primary_description").GetDiag() } - if err = d.Set("primary_ip_address", serviceInstanceStatus.PrimaryIpAddress); err != nil { + if err = d.Set("primary_ip_address", serviceInstanceStatus.PrimaryIPAddress); err != nil { return flex.DiscriminatedTerraformErrorf(err, fmt.Sprintf("Error setting primary_ip_address: %s", err), "(Data) ibm_pdr_last_operation", "read", "set-primary_ip_address").GetDiag() } @@ -207,7 +207,7 @@ func dataSourceIbmPdrLastOperationRead(context context.Context, d *schema.Resour return flex.DiscriminatedTerraformErrorf(err, fmt.Sprintf("Error setting standby_description: %s", err), "(Data) ibm_pdr_last_operation", "read", "set-standby_description").GetDiag() } - if err = d.Set("standby_ip_address", serviceInstanceStatus.StandbyIpAddress); err != nil { + if err = d.Set("standby_ip_address", serviceInstanceStatus.StandbyIPAddress); err != nil { return flex.DiscriminatedTerraformErrorf(err, fmt.Sprintf("Error setting standby_ip_address: %s", err), "(Data) ibm_pdr_last_operation", "read", "set-standby_ip_address").GetDiag() } diff --git a/ibm/service/drautomationservice/data_source_ibm_pdr_schematic_workspaces.go b/ibm/service/drautomationservice/data_source_ibm_pdr_schematic_workspaces.go index 77ffebb0ab..6f7cde0d65 100644 --- a/ibm/service/drautomationservice/data_source_ibm_pdr_schematic_workspaces.go +++ b/ibm/service/drautomationservice/data_source_ibm_pdr_schematic_workspaces.go @@ -162,8 +162,8 @@ func DataSourceIbmPdrSchematicWorkspacesDrAutomationSchematicsWorkspaceToMap(mod if model.CreatedBy != nil { modelMap["created_by"] = *model.CreatedBy } - if model.Crn != nil { - modelMap["crn"] = *model.Crn + if model.CRN != nil { + modelMap["crn"] = *model.CRN } if model.Description != nil { modelMap["description"] = *model.Description diff --git a/ibm/service/drautomationservice/data_source_ibm_pdr_schematic_workspaces_test.go b/ibm/service/drautomationservice/data_source_ibm_pdr_schematic_workspaces_test.go index 39d2e19eda..eb5de7d988 100644 --- a/ibm/service/drautomationservice/data_source_ibm_pdr_schematic_workspaces_test.go +++ b/ibm/service/drautomationservice/data_source_ibm_pdr_schematic_workspaces_test.go @@ -3,7 +3,7 @@ /* * IBM OpenAPI Terraform Generator Version: 3.105.0-3c13b041-20250605-193116 - */ +*/ package drautomationservice_test @@ -13,12 +13,12 @@ import ( "github.com/hashicorp/terraform-plugin-testing/helper/resource" - acc "github.com/IBM-Cloud/terraform-provider-ibm/ibm/acctest" "github.com/IBM-Cloud/terraform-provider-ibm/ibm/service/drautomationservice" - . "github.com/IBM-Cloud/terraform-provider-ibm/ibm/unittest" "github.com/IBM/go-sdk-core/v5/core" "github.com/stretchr/testify/assert" "github.ibm.com/DRAutomation/dra-go-sdk/drautomationservicev1" + . "github.com/IBM-Cloud/terraform-provider-ibm/ibm/unittest" + acc "github.com/IBM-Cloud/terraform-provider-ibm/ibm/acctest" ) func TestAccIbmPdrSchematicWorkspacesDataSourceBasic(t *testing.T) { @@ -42,10 +42,12 @@ func testAccCheckIbmPdrSchematicWorkspacesDataSourceConfigBasic() string { return fmt.Sprintf(` data "ibm_pdr_schematic_workspaces" "pdr_schematic_workspaces_instance" { instance_id = "crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::" + If-None-Match = "If-None-Match" } `) } + func TestDataSourceIbmPdrSchematicWorkspacesDrAutomationSchematicsWorkspaceToMap(t *testing.T) { checkResult := func(result map[string]interface{}) { drAutomationCatalogRefModel := make(map[string]interface{}) @@ -72,7 +74,7 @@ func TestDataSourceIbmPdrSchematicWorkspacesDrAutomationSchematicsWorkspaceToMap model.CatalogRef = drAutomationCatalogRefModel model.CreatedAt = CreateMockDateTime("2025-02-24T11:18:49.819Z") model.CreatedBy = core.StringPtr("crn:v1:bluemix:public:project:eu-gb:a/094f4214c75941f94c2w1g1b001df1fe:fbe45gs9-d3c6-hny3-898d-ff2e6rfes257::") - model.Crn = core.StringPtr("crn:v1:bluemix:public:schematics:eu-de:a/094f42141234567891da601b001df1fe:59389f45-a1d7-085g-8abe-7a28327e5574:workspace:eu-gb.workspace.projects-service.42a7ab33") + model.CRN = core.StringPtr("crn:v1:bluemix:public:schematics:eu-de:a/094f42141234567891da601b001df1fe:59389f45-a1d7-085g-8abe-7a28327e5574:workspace:eu-gb.workspace.projects-service.42a7ab33") model.Description = core.StringPtr("A configuration of the 54f31234-e74f-4567-a0a8-367b45658765 project") model.ID = core.StringPtr("A configuration of the fbe4a122-d3c6-4543-898d-ff2e6df74123 project") model.Location = core.StringPtr("us-south") diff --git a/ibm/service/drautomationservice/data_source_ibm_pdr_validate_clustertype.go b/ibm/service/drautomationservice/data_source_ibm_pdr_validate_clustertype.go deleted file mode 100644 index 3d2aed2fb6..0000000000 --- a/ibm/service/drautomationservice/data_source_ibm_pdr_validate_clustertype.go +++ /dev/null @@ -1,110 +0,0 @@ -// Copyright IBM Corp. 2025 All Rights Reserved. -// Licensed under the Mozilla Public License v2.0 - -/* - * IBM OpenAPI Terraform Generator Version: 3.105.0-3c13b041-20250605-193116 -*/ - -package drautomationservice - -import ( - "context" - "fmt" - "log" - "time" - - "github.com/hashicorp/terraform-plugin-sdk/v2/diag" - "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" - - "github.com/IBM-Cloud/terraform-provider-ibm/ibm/conns" - "github.com/IBM-Cloud/terraform-provider-ibm/ibm/flex" - "github.com/IBM/go-sdk-core/v5/core" - "github.ibm.com/DRAutomation/dra-go-sdk/drautomationservicev1" -) - -func DataSourceIbmPdrValidateClustertype() *schema.Resource { - return &schema.Resource{ - ReadContext: dataSourceIbmPdrValidateClustertypeRead, - - Schema: map[string]*schema.Schema{ - "instance_id": &schema.Schema{ - Type: schema.TypeString, - Required: true, - Description: "instance id of instance to provision.", - }, - "orchestrator_cluster_type": &schema.Schema{ - Type: schema.TypeString, - Required: true, - Description: "orchestrator cluster type value.", - }, - "accept_language": &schema.Schema{ - Type: schema.TypeString, - Optional: true, - Description: "The language requested for the return document.", - }, - "if_none_match": &schema.Schema{ - Type: schema.TypeString, - Optional: true, - Description: "ETag for conditional requests (optional).", - }, - "description": &schema.Schema{ - Type: schema.TypeString, - Computed: true, - Description: "Human-readable message explaining the cluster type validation result.", - }, - "status": &schema.Schema{ - Type: schema.TypeString, - Computed: true, - Description: "Status of the cluster type validation (for example, valid, invalid, or error).", - }, - }, - } -} - -func dataSourceIbmPdrValidateClustertypeRead(context context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { - drAutomationServiceClient, err := meta.(conns.ClientSession).DrAutomationServiceV1() - if err != nil { - tfErr := flex.DiscriminatedTerraformErrorf(err, err.Error(), "(Data) ibm_pdr_validate_clustertype", "read", "initialize-client") - log.Printf("[DEBUG]\n%s", tfErr.GetDebugMessage()) - return tfErr.GetDiag() - } - - getValidateClusterTypeOptions := &drautomationservicev1.GetValidateClusterTypeOptions{} - - getValidateClusterTypeOptions.SetInstanceID(d.Get("instance_id").(string)) - getValidateClusterTypeOptions.SetOrchestratorClusterType(d.Get("orchestrator_cluster_type").(string)) - if _, ok := d.GetOk("accept_language"); ok { - getValidateClusterTypeOptions.SetAcceptLanguage(d.Get("accept_language").(string)) - } - if _, ok := d.GetOk("if_none_match"); ok { - getValidateClusterTypeOptions.SetIfNoneMatch(d.Get("if_none_match").(string)) - } - - validateClusterTypeResponse, _, err := drAutomationServiceClient.GetValidateClusterTypeWithContext(context, getValidateClusterTypeOptions) - if err != nil { - tfErr := flex.TerraformErrorf(err, fmt.Sprintf("GetValidateClusterTypeWithContext failed: %s", err.Error()), "(Data) ibm_pdr_validate_clustertype", "read") - log.Printf("[DEBUG]\n%s", tfErr.GetDebugMessage()) - return tfErr.GetDiag() - } - - d.SetId(dataSourceIbmPdrValidateClustertypeID(d)) - - if !core.IsNil(validateClusterTypeResponse.Description) { - if err = d.Set("description", validateClusterTypeResponse.Description); err != nil { - return flex.DiscriminatedTerraformErrorf(err, fmt.Sprintf("Error setting description: %s", err), "(Data) ibm_pdr_validate_clustertype", "read", "set-description").GetDiag() - } - } - - if !core.IsNil(validateClusterTypeResponse.Status) { - if err = d.Set("status", validateClusterTypeResponse.Status); err != nil { - return flex.DiscriminatedTerraformErrorf(err, fmt.Sprintf("Error setting status: %s", err), "(Data) ibm_pdr_validate_clustertype", "read", "set-status").GetDiag() - } - } - - return nil -} - -// dataSourceIbmPdrValidateClustertypeID returns a reasonable ID for the list. -func dataSourceIbmPdrValidateClustertypeID(d *schema.ResourceData) string { - return time.Now().UTC().String() -} diff --git a/ibm/service/drautomationservice/data_source_ibm_pdr_validate_clustertype_test.go b/ibm/service/drautomationservice/data_source_ibm_pdr_validate_clustertype_test.go deleted file mode 100644 index 6d01d7dbdc..0000000000 --- a/ibm/service/drautomationservice/data_source_ibm_pdr_validate_clustertype_test.go +++ /dev/null @@ -1,43 +0,0 @@ -// Copyright IBM Corp. 2025 All Rights Reserved. -// Licensed under the Mozilla Public License v2.0 - -/* - * IBM OpenAPI Terraform Generator Version: 3.105.0-3c13b041-20250605-193116 - */ - -package drautomationservice_test - -import ( - "fmt" - "testing" - - "github.com/hashicorp/terraform-plugin-testing/helper/resource" - - acc "github.com/IBM-Cloud/terraform-provider-ibm/ibm/acctest" -) - -func TestAccIbmPdrValidateClustertypeDataSourceBasic(t *testing.T) { - resource.Test(t, resource.TestCase{ - PreCheck: func() { acc.TestAccPreCheck(t) }, - Providers: acc.TestAccProviders, - Steps: []resource.TestStep{ - resource.TestStep{ - Config: testAccCheckIbmPdrValidateClustertypeDataSourceConfigBasic(), - Check: resource.ComposeTestCheckFunc( - resource.TestCheckResourceAttrSet("data.ibm_pdr_validate_clustertype.pdr_validate_clustertype_instance", "id"), - resource.TestCheckResourceAttrSet("data.ibm_pdr_validate_clustertype.pdr_validate_clustertype_instance", "instance_id"), - resource.TestCheckResourceAttrSet("data.ibm_pdr_validate_clustertype.pdr_validate_clustertype_instance", "orchestrator_cluster_type"), - ), - }, - }, - }) -} - -func testAccCheckIbmPdrValidateClustertypeDataSourceConfigBasic() string { - return fmt.Sprintf(` - data "ibm_pdr_validate_clustertype" "pdr_validate_clustertype_instance" { - instance_id = "crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::" - orchestrator_cluster_type = "off-premises" - } - `) -} diff --git a/ibm/service/drautomationservice/data_source_ibm_pdr_validate_proxyip.go b/ibm/service/drautomationservice/data_source_ibm_pdr_validate_proxyip.go deleted file mode 100644 index 102f41df2b..0000000000 --- a/ibm/service/drautomationservice/data_source_ibm_pdr_validate_proxyip.go +++ /dev/null @@ -1,125 +0,0 @@ -// Copyright IBM Corp. 2025 All Rights Reserved. -// Licensed under the Mozilla Public License v2.0 - -/* - * IBM OpenAPI Terraform Generator Version: 3.105.0-3c13b041-20250605-193116 -*/ - -package drautomationservice - -import ( - "context" - "fmt" - "log" - "time" - - "github.com/hashicorp/terraform-plugin-sdk/v2/diag" - "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" - - "github.com/IBM-Cloud/terraform-provider-ibm/ibm/conns" - "github.com/IBM-Cloud/terraform-provider-ibm/ibm/flex" - "github.com/IBM/go-sdk-core/v5/core" - "github.ibm.com/DRAutomation/dra-go-sdk/drautomationservicev1" -) - -func DataSourceIbmPdrValidateProxyip() *schema.Resource { - return &schema.Resource{ - ReadContext: dataSourceIbmPdrValidateProxyipRead, - - Schema: map[string]*schema.Schema{ - "instance_id": &schema.Schema{ - Type: schema.TypeString, - Required: true, - Description: "instance id of instance to provision.", - }, - "proxyip": &schema.Schema{ - Type: schema.TypeString, - Required: true, - Description: "proxyip value.", - }, - "vpc_location": &schema.Schema{ - Type: schema.TypeString, - Required: true, - Description: "vpc location value.", - }, - "vpc_id": &schema.Schema{ - Type: schema.TypeString, - Required: true, - Description: "vpc id value.", - }, - "if_none_match": &schema.Schema{ - Type: schema.TypeString, - Optional: true, - Description: "ETag for conditional requests (optional).", - }, - "description": &schema.Schema{ - Type: schema.TypeString, - Computed: true, - Description: "Human-readable message explaining the proxy IP validation result.", - }, - "status": &schema.Schema{ - Type: schema.TypeString, - Computed: true, - Description: "Status of the proxy IP validation (for example, valid, invalid, or error).", - }, - "warning": &schema.Schema{ - Type: schema.TypeBool, - Computed: true, - Description: "Indicates whether the proxy IP is valid but has an advisory (e.g., not in reserved IPs).", - }, - }, - } -} - -func dataSourceIbmPdrValidateProxyipRead(context context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { - drAutomationServiceClient, err := meta.(conns.ClientSession).DrAutomationServiceV1() - if err != nil { - tfErr := flex.DiscriminatedTerraformErrorf(err, err.Error(), "(Data) ibm_pdr_validate_proxyip", "read", "initialize-client") - log.Printf("[DEBUG]\n%s", tfErr.GetDebugMessage()) - return tfErr.GetDiag() - } - - getValidateProxyipOptions := &drautomationservicev1.GetValidateProxyipOptions{} - - getValidateProxyipOptions.SetInstanceID(d.Get("instance_id").(string)) - getValidateProxyipOptions.SetProxyip(d.Get("proxyip").(string)) - getValidateProxyipOptions.SetVpcLocation(d.Get("vpc_location").(string)) - getValidateProxyipOptions.SetVpcID(d.Get("vpc_id").(string)) - if _, ok := d.GetOk("if_none_match"); ok { - getValidateProxyipOptions.SetIfNoneMatch(d.Get("if_none_match").(string)) - } - - validateProxyipResponse, _, err := drAutomationServiceClient.GetValidateProxyipWithContext(context, getValidateProxyipOptions) - if err != nil { - tfErr := flex.TerraformErrorf(err, fmt.Sprintf("GetValidateProxyipWithContext failed: %s", err.Error()), "(Data) ibm_pdr_validate_proxyip", "read") - log.Printf("[DEBUG]\n%s", tfErr.GetDebugMessage()) - return tfErr.GetDiag() - } - - d.SetId(dataSourceIbmPdrValidateProxyipID(d)) - - if !core.IsNil(validateProxyipResponse.Description) { - if err = d.Set("description", validateProxyipResponse.Description); err != nil { - return flex.DiscriminatedTerraformErrorf(err, fmt.Sprintf("Error setting description: %s", err), "(Data) ibm_pdr_validate_proxyip", "read", "set-description").GetDiag() - } - } - - if !core.IsNil(validateProxyipResponse.Status) { - if err = d.Set("status", validateProxyipResponse.Status); err != nil { - return flex.DiscriminatedTerraformErrorf(err, fmt.Sprintf("Error setting status: %s", err), "(Data) ibm_pdr_validate_proxyip", "read", "set-status").GetDiag() - } - } - - if !core.IsNil(validateProxyipResponse.Warning) { - if err = d.Set("warning", validateProxyipResponse.Warning); err != nil { - return flex.DiscriminatedTerraformErrorf(err, fmt.Sprintf("Error setting warning: %s", err), "(Data) ibm_pdr_validate_proxyip", "read", "set-warning").GetDiag() - } - } - - return nil -} - -// dataSourceIbmPdrValidateProxyipID returns a reasonable ID for the list. -func dataSourceIbmPdrValidateProxyipID(d *schema.ResourceData) string { - return time.Now().UTC().String() -} diff --git a/ibm/service/drautomationservice/data_source_ibm_pdr_validate_proxyip_test.go b/ibm/service/drautomationservice/data_source_ibm_pdr_validate_proxyip_test.go deleted file mode 100644 index deb73c070f..0000000000 --- a/ibm/service/drautomationservice/data_source_ibm_pdr_validate_proxyip_test.go +++ /dev/null @@ -1,47 +0,0 @@ -// Copyright IBM Corp. 2025 All Rights Reserved. -// Licensed under the Mozilla Public License v2.0 - -/* - * IBM OpenAPI Terraform Generator Version: 3.105.0-3c13b041-20250605-193116 - */ - -package drautomationservice_test - -import ( - "fmt" - "testing" - - "github.com/hashicorp/terraform-plugin-testing/helper/resource" - - acc "github.com/IBM-Cloud/terraform-provider-ibm/ibm/acctest" -) - -func TestAccIbmPdrValidateProxyipDataSourceBasic(t *testing.T) { - resource.Test(t, resource.TestCase{ - PreCheck: func() { acc.TestAccPreCheck(t) }, - Providers: acc.TestAccProviders, - Steps: []resource.TestStep{ - resource.TestStep{ - Config: testAccCheckIbmPdrValidateProxyipDataSourceConfigBasic(), - Check: resource.ComposeTestCheckFunc( - resource.TestCheckResourceAttrSet("data.ibm_pdr_validate_proxyip.pdr_validate_proxyip_instance", "id"), - resource.TestCheckResourceAttrSet("data.ibm_pdr_validate_proxyip.pdr_validate_proxyip_instance", "instance_id"), - resource.TestCheckResourceAttrSet("data.ibm_pdr_validate_proxyip.pdr_validate_proxyip_instance", "proxyip"), - resource.TestCheckResourceAttrSet("data.ibm_pdr_validate_proxyip.pdr_validate_proxyip_instance", "vpc_location"), - resource.TestCheckResourceAttrSet("data.ibm_pdr_validate_proxyip.pdr_validate_proxyip_instance", "vpc_id"), - ), - }, - }, - }) -} - -func testAccCheckIbmPdrValidateProxyipDataSourceConfigBasic() string { - return fmt.Sprintf(` - data "ibm_pdr_validate_proxyip" "pdr_validate_proxyip_instance" { - instance_id = "crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::" - proxyip = "10.30.40.5:3128" - vpc_location = "us-south" - vpc_id = "r006-2f3b3ab9-2149-49cc-83a1-30a5d93d59b2" - } - `) -} diff --git a/ibm/service/drautomationservice/data_source_ibm_pdr_validate_workspace.go b/ibm/service/drautomationservice/data_source_ibm_pdr_validate_workspace.go deleted file mode 100644 index a071c2c0b5..0000000000 --- a/ibm/service/drautomationservice/data_source_ibm_pdr_validate_workspace.go +++ /dev/null @@ -1,114 +0,0 @@ -// Copyright IBM Corp. 2025 All Rights Reserved. -// Licensed under the Mozilla Public License v2.0 - -/* - * IBM OpenAPI Terraform Generator Version: 3.105.0-3c13b041-20250605-193116 -*/ - -package drautomationservice - -import ( - "context" - "fmt" - "log" - "time" - - "github.com/hashicorp/terraform-plugin-sdk/v2/diag" - "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" - - "github.com/IBM-Cloud/terraform-provider-ibm/ibm/conns" - "github.com/IBM-Cloud/terraform-provider-ibm/ibm/flex" - "github.com/IBM/go-sdk-core/v5/core" - "github.ibm.com/DRAutomation/dra-go-sdk/drautomationservicev1" -) - -func DataSourceIbmPdrValidateWorkspace() *schema.Resource { - return &schema.Resource{ - ReadContext: dataSourceIbmPdrValidateWorkspaceRead, - - Schema: map[string]*schema.Schema{ - "instance_id": &schema.Schema{ - Type: schema.TypeString, - Required: true, - Description: "instance id of instance to provision.", - }, - "workspace_id": &schema.Schema{ - Type: schema.TypeString, - Required: true, - Description: "standBy workspaceID value.", - }, - "crn": &schema.Schema{ - Type: schema.TypeString, - Required: true, - Description: "crn value.", - }, - "location_url": &schema.Schema{ - Type: schema.TypeString, - Required: true, - Description: "schematic_workspace_id value.", - }, - "if_none_match": &schema.Schema{ - Type: schema.TypeString, - Optional: true, - Description: "ETag for conditional requests (optional).", - }, - "description": &schema.Schema{ - Type: schema.TypeString, - Computed: true, - Description: "Human-readable message describing the validation result.", - }, - "status": &schema.Schema{ - Type: schema.TypeString, - Computed: true, - Description: "Status of the workspace validation (for example, Valid, Invalid, or Pending).", - }, - }, - } -} - -func dataSourceIbmPdrValidateWorkspaceRead(context context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { - drAutomationServiceClient, err := meta.(conns.ClientSession).DrAutomationServiceV1() - if err != nil { - tfErr := flex.DiscriminatedTerraformErrorf(err, err.Error(), "(Data) ibm_pdr_validate_workspace", "read", "initialize-client") - log.Printf("[DEBUG]\n%s", tfErr.GetDebugMessage()) - return tfErr.GetDiag() - } - - getValidatePowerVsWorkspaceOptions := &drautomationservicev1.GetValidatePowerVsWorkspaceOptions{} - - getValidatePowerVsWorkspaceOptions.SetInstanceID(d.Get("instance_id").(string)) - getValidatePowerVsWorkspaceOptions.SetWorkspaceID(d.Get("workspace_id").(string)) - getValidatePowerVsWorkspaceOptions.SetCrn(d.Get("crn").(string)) - getValidatePowerVsWorkspaceOptions.SetLocationURL(d.Get("location_url").(string)) - if _, ok := d.GetOk("if_none_match"); ok { - getValidatePowerVsWorkspaceOptions.SetIfNoneMatch(d.Get("if_none_match").(string)) - } - - validateWorkspaceResponse, _, err := drAutomationServiceClient.GetValidatePowerVsWorkspaceWithContext(context, getValidatePowerVsWorkspaceOptions) - if err != nil { - tfErr := flex.TerraformErrorf(err, fmt.Sprintf("GetValidatePowerVsWorkspaceWithContext failed: %s", err.Error()), "(Data) ibm_pdr_validate_workspace", "read") - log.Printf("[DEBUG]\n%s", tfErr.GetDebugMessage()) - return tfErr.GetDiag() - } - - d.SetId(dataSourceIbmPdrValidateWorkspaceID(d)) - - if !core.IsNil(validateWorkspaceResponse.Description) { - if err = d.Set("description", validateWorkspaceResponse.Description); err != nil { - return flex.DiscriminatedTerraformErrorf(err, fmt.Sprintf("Error setting description: %s", err), "(Data) ibm_pdr_validate_workspace", "read", "set-description").GetDiag() - } - } - - if !core.IsNil(validateWorkspaceResponse.Status) { - if err = d.Set("status", validateWorkspaceResponse.Status); err != nil { - return flex.DiscriminatedTerraformErrorf(err, fmt.Sprintf("Error setting status: %s", err), "(Data) ibm_pdr_validate_workspace", "read", "set-status").GetDiag() - } - } - - return nil -} - -// dataSourceIbmPdrValidateWorkspaceID returns a reasonable ID for the list. -func dataSourceIbmPdrValidateWorkspaceID(d *schema.ResourceData) string { - return time.Now().UTC().String() -} diff --git a/ibm/service/drautomationservice/data_source_ibm_pdr_validate_workspace_test.go b/ibm/service/drautomationservice/data_source_ibm_pdr_validate_workspace_test.go deleted file mode 100644 index f5dd62ebaf..0000000000 --- a/ibm/service/drautomationservice/data_source_ibm_pdr_validate_workspace_test.go +++ /dev/null @@ -1,47 +0,0 @@ -// Copyright IBM Corp. 2025 All Rights Reserved. -// Licensed under the Mozilla Public License v2.0 - -/* - * IBM OpenAPI Terraform Generator Version: 3.105.0-3c13b041-20250605-193116 - */ - -package drautomationservice_test - -import ( - "fmt" - "testing" - - "github.com/hashicorp/terraform-plugin-testing/helper/resource" - - acc "github.com/IBM-Cloud/terraform-provider-ibm/ibm/acctest" -) - -func TestAccIbmPdrValidateWorkspaceDataSourceBasic(t *testing.T) { - resource.Test(t, resource.TestCase{ - PreCheck: func() { acc.TestAccPreCheck(t) }, - Providers: acc.TestAccProviders, - Steps: []resource.TestStep{ - resource.TestStep{ - Config: testAccCheckIbmPdrValidateWorkspaceDataSourceConfigBasic(), - Check: resource.ComposeTestCheckFunc( - resource.TestCheckResourceAttrSet("data.ibm_pdr_validate_workspace.pdr_validate_workspace_instance", "id"), - resource.TestCheckResourceAttrSet("data.ibm_pdr_validate_workspace.pdr_validate_workspace_instance", "instance_id"), - resource.TestCheckResourceAttrSet("data.ibm_pdr_validate_workspace.pdr_validate_workspace_instance", "workspace_id"), - resource.TestCheckResourceAttrSet("data.ibm_pdr_validate_workspace.pdr_validate_workspace_instance", "crn"), - resource.TestCheckResourceAttrSet("data.ibm_pdr_validate_workspace.pdr_validate_workspace_instance", "location_url"), - ), - }, - }, - }) -} - -func testAccCheckIbmPdrValidateWorkspaceDataSourceConfigBasic() string { - return fmt.Sprintf(` - data "ibm_pdr_validate_workspace" "pdr_validate_workspace_instance" { - instance_id = "crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::" - workspace_id = "75cbf05b-78f6-406e-afe7-a904f646d798" - crn = "crn:v1:bluemix:public:power-iaas:dal10:a/094f4214c75941f991da601b001df1fe:75cbf05b-78f6-406e-afe7-a904f646d798::" - location_url = "https://us-south.power-iaas.cloud.ibm.com" - } - `) -} diff --git a/ibm/service/drautomationservice/data_source_ibm_pdr_workspace_custom_vpc.go b/ibm/service/drautomationservice/data_source_ibm_pdr_workspace_custom_vpc.go index debc224bbd..7599c63115 100644 --- a/ibm/service/drautomationservice/data_source_ibm_pdr_workspace_custom_vpc.go +++ b/ibm/service/drautomationservice/data_source_ibm_pdr_workspace_custom_vpc.go @@ -3,7 +3,7 @@ /* * IBM OpenAPI Terraform Generator Version: 3.105.0-3c13b041-20250605-193116 -*/ + */ package drautomationservice @@ -192,19 +192,19 @@ func dataSourceIbmPdrWorkspaceCustomVpcRead(context context.Context, d *schema.R return tfErr.GetDiag() } - getPvsworkspacesCustomVpcOptions := &drautomationservicev1.GetPvsworkspacesCustomVpcOptions{} + getPowervsWorkspacesForCustomVpcOptions := &drautomationservicev1.GetPowervsWorkspacesForCustomVPCOptions{} - getPvsworkspacesCustomVpcOptions.SetInstanceID(d.Get("instance_id").(string)) - getPvsworkspacesCustomVpcOptions.SetLocationID(d.Get("location_id").(string)) - getPvsworkspacesCustomVpcOptions.SetVpcID(d.Get("vpc_id").(string)) - getPvsworkspacesCustomVpcOptions.SetTgID(d.Get("tg_id").(string)) + getPowervsWorkspacesForCustomVpcOptions.SetInstanceID(d.Get("instance_id").(string)) + getPowervsWorkspacesForCustomVpcOptions.SetLocationID(d.Get("location_id").(string)) + getPowervsWorkspacesForCustomVpcOptions.SetVPCID(d.Get("vpc_id").(string)) + getPowervsWorkspacesForCustomVpcOptions.SetTgID(d.Get("tg_id").(string)) if _, ok := d.GetOk("if_none_match"); ok { - getPvsworkspacesCustomVpcOptions.SetIfNoneMatch(d.Get("if_none_match").(string)) + getPowervsWorkspacesForCustomVpcOptions.SetIfNoneMatch(d.Get("if_none_match").(string)) } - drDataCustomVPC, _, err := drAutomationServiceClient.GetPvsworkspacesCustomVpcWithContext(context, getPvsworkspacesCustomVpcOptions) + drDataCustomVPC, _, err := drAutomationServiceClient.GetPowervsWorkspacesForCustomVPCWithContext(context, getPowervsWorkspacesForCustomVpcOptions) if err != nil { - tfErr := flex.TerraformErrorf(err, fmt.Sprintf("GetPvsworkspacesCustomVpcWithContext failed: %s", err.Error()), "(Data) ibm_pdr_workspace_custom_vpc", "read") + tfErr := flex.TerraformErrorf(err, fmt.Sprintf("GetPowervsWorkspacesForCustomVpcWithContext failed: %s", err.Error()), "(Data) ibm_pdr_workspace_custom_vpc", "read") log.Printf("[DEBUG]\n%s", tfErr.GetDebugMessage()) return tfErr.GetDiag() } @@ -243,7 +243,7 @@ func dataSourceIbmPdrWorkspaceCustomVpcID(d *schema.ResourceData) string { return time.Now().UTC().String() } -func DataSourceIbmPdrWorkspaceCustomVpcDRStandbyWorkspaceToMap(model *drautomationservicev1.DRStandbyWorkspace) (map[string]interface{}, error) { +func DataSourceIbmPdrWorkspaceCustomVpcDRStandbyWorkspaceToMap(model *drautomationservicev1.DrStandbyWorkspace) (map[string]interface{}, error) { modelMap := make(map[string]interface{}) if model.Details != nil { detailsMap, err := DataSourceIbmPdrWorkspaceCustomVpcDetailsDrToMap(model.Details) @@ -273,8 +273,8 @@ func DataSourceIbmPdrWorkspaceCustomVpcDRStandbyWorkspaceToMap(model *drautomati func DataSourceIbmPdrWorkspaceCustomVpcDetailsDrToMap(model *drautomationservicev1.DetailsDr) (map[string]interface{}, error) { modelMap := make(map[string]interface{}) - if model.Crn != nil { - modelMap["crn"] = *model.Crn + if model.CRN != nil { + modelMap["crn"] = *model.CRN } return modelMap, nil } @@ -293,7 +293,7 @@ func DataSourceIbmPdrWorkspaceCustomVpcLocationDrToMap(model *drautomationservic return modelMap, nil } -func DataSourceIbmPdrWorkspaceCustomVpcDRWorkspaceToMap(model *drautomationservicev1.DRWorkspace) (map[string]interface{}, error) { +func DataSourceIbmPdrWorkspaceCustomVpcDRWorkspaceToMap(model *drautomationservicev1.DrWorkspace) (map[string]interface{}, error) { modelMap := make(map[string]interface{}) if model.Default != nil { modelMap["default"] = *model.Default diff --git a/ibm/service/drautomationservice/data_source_ibm_pdr_workspace_custom_vpc_test.go b/ibm/service/drautomationservice/data_source_ibm_pdr_workspace_custom_vpc_test.go index 75262bbde8..8ee790802c 100644 --- a/ibm/service/drautomationservice/data_source_ibm_pdr_workspace_custom_vpc_test.go +++ b/ibm/service/drautomationservice/data_source_ibm_pdr_workspace_custom_vpc_test.go @@ -45,9 +45,10 @@ func testAccCheckIbmPdrWorkspaceCustomVpcDataSourceConfigBasic() string { return fmt.Sprintf(` data "ibm_pdr_workspace_custom_vpc" "pdr_workspace_custom_vpc_instance" { instance_id = "crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::" - location_id = "lon06" + location_id = "location_id" vpc_id = "r006-2f3b3ab9-2149-49cc-83a1-30a5d93d59b2" - tg_id = "024fcff9-c676-46e4-ad42-3b2d349c9f8f" + tg_id = "925a7b81-a826-4d0a-8ef9-7496e9dc58bc" + If-None-Match = "If-None-Match" } `) } @@ -73,14 +74,14 @@ func TestDataSourceIbmPdrWorkspaceCustomVpcDRStandbyWorkspaceToMap(t *testing.T) } detailsDrModel := new(drautomationservicev1.DetailsDr) - detailsDrModel.Crn = core.StringPtr("crn:v1:bluemix:public:power-iaas:lon06:a/094f4214c75941f991da601b001df1fe:b6297e60-d0fe-4e24-8b15-276cf0645737::") + detailsDrModel.CRN = core.StringPtr("crn:v1:bluemix:public:power-iaas:lon06:a/094f4214c75941f991da601b001df1fe:b6297e60-d0fe-4e24-8b15-276cf0645737::") locationDrModel := new(drautomationservicev1.LocationDr) locationDrModel.Region = core.StringPtr("lon06") locationDrModel.Type = core.StringPtr("data-center") locationDrModel.URL = core.StringPtr("https://lon.power-iaas.cloud.ibm.com") - model := new(drautomationservicev1.DRStandbyWorkspace) + model := new(drautomationservicev1.DrStandbyWorkspace) model.Details = detailsDrModel model.ID = core.StringPtr("testString") model.Location = locationDrModel @@ -101,7 +102,7 @@ func TestDataSourceIbmPdrWorkspaceCustomVpcDetailsDrToMap(t *testing.T) { } model := new(drautomationservicev1.DetailsDr) - model.Crn = core.StringPtr("crn:v1:bluemix:public:power-iaas:lon06:a/094f4214c75941f991da601b001df1fe:b6297e60-d0fe-4e24-8b15-276cf0645737::") + model.CRN = core.StringPtr("crn:v1:bluemix:public:power-iaas:lon06:a/094f4214c75941f991da601b001df1fe:b6297e60-d0fe-4e24-8b15-276cf0645737::") result, err := drautomationservice.DataSourceIbmPdrWorkspaceCustomVpcDetailsDrToMap(model) assert.Nil(t, err) @@ -150,14 +151,14 @@ func TestDataSourceIbmPdrWorkspaceCustomVpcDRWorkspaceToMap(t *testing.T) { } detailsDrModel := new(drautomationservicev1.DetailsDr) - detailsDrModel.Crn = core.StringPtr("crn:v1:bluemix:public:power-iaas:lon06:a/094f4214c75941f991da601b001df1fe:b6297e60-d0fe-4e24-8b15-276cf0645737::") + detailsDrModel.CRN = core.StringPtr("crn:v1:bluemix:public:power-iaas:lon06:a/094f4214c75941f991da601b001df1fe:b6297e60-d0fe-4e24-8b15-276cf0645737::") locationDrModel := new(drautomationservicev1.LocationDr) locationDrModel.Region = core.StringPtr("lon06") locationDrModel.Type = core.StringPtr("data-center") locationDrModel.URL = core.StringPtr("https://lon.power-iaas.cloud.ibm.com") - model := new(drautomationservicev1.DRWorkspace) + model := new(drautomationservicev1.DrWorkspace) model.Default = core.BoolPtr(true) model.Details = detailsDrModel model.ID = core.StringPtr("testString") diff --git a/ibm/service/drautomationservice/data_source_ibm_pdr_workspace_schematic.go b/ibm/service/drautomationservice/data_source_ibm_pdr_workspace_schematic.go index 3a6af70d5b..650ef258c8 100644 --- a/ibm/service/drautomationservice/data_source_ibm_pdr_workspace_schematic.go +++ b/ibm/service/drautomationservice/data_source_ibm_pdr_workspace_schematic.go @@ -237,7 +237,7 @@ func dataSourceIbmPdrWorkspaceSchematicID(d *schema.ResourceData) string { return time.Now().UTC().String() } -func DataSourceIbmPdrWorkspaceSchematicDRStandbyWorkspaceToMap(model *drautomationservicev1.DRStandbyWorkspace) (map[string]interface{}, error) { +func DataSourceIbmPdrWorkspaceSchematicDRStandbyWorkspaceToMap(model *drautomationservicev1.DrStandbyWorkspace) (map[string]interface{}, error) { modelMap := make(map[string]interface{}) if model.Details != nil { detailsMap, err := DataSourceIbmPdrWorkspaceSchematicDetailsDrToMap(model.Details) @@ -267,8 +267,8 @@ func DataSourceIbmPdrWorkspaceSchematicDRStandbyWorkspaceToMap(model *drautomati func DataSourceIbmPdrWorkspaceSchematicDetailsDrToMap(model *drautomationservicev1.DetailsDr) (map[string]interface{}, error) { modelMap := make(map[string]interface{}) - if model.Crn != nil { - modelMap["crn"] = *model.Crn + if model.CRN != nil { + modelMap["crn"] = *model.CRN } return modelMap, nil } @@ -287,7 +287,7 @@ func DataSourceIbmPdrWorkspaceSchematicLocationDrToMap(model *drautomationservic return modelMap, nil } -func DataSourceIbmPdrWorkspaceSchematicDRWorkspaceToMap(model *drautomationservicev1.DRWorkspace) (map[string]interface{}, error) { +func DataSourceIbmPdrWorkspaceSchematicDRWorkspaceToMap(model *drautomationservicev1.DrWorkspace) (map[string]interface{}, error) { modelMap := make(map[string]interface{}) if model.Default != nil { modelMap["default"] = *model.Default diff --git a/ibm/service/drautomationservice/data_source_ibm_pdr_workspace_schematic_test.go b/ibm/service/drautomationservice/data_source_ibm_pdr_workspace_schematic_test.go index 71ff416db9..ee7a4a3c5f 100644 --- a/ibm/service/drautomationservice/data_source_ibm_pdr_workspace_schematic_test.go +++ b/ibm/service/drautomationservice/data_source_ibm_pdr_workspace_schematic_test.go @@ -45,7 +45,8 @@ func testAccCheckIbmPdrWorkspaceSchematicDataSourceConfigBasic() string { data "ibm_pdr_workspace_schematic" "pdr_workspace_schematic_instance" { instance_id = "crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::" schematic_id = "us-south.workspace.projects-service.3ae96a02" - location_id = "lon06" + location_id = "location_id" + If-None-Match = "If-None-Match" } `) } @@ -71,14 +72,14 @@ func TestDataSourceIbmPdrWorkspaceSchematicDRStandbyWorkspaceToMap(t *testing.T) } detailsDrModel := new(drautomationservicev1.DetailsDr) - detailsDrModel.Crn = core.StringPtr("crn:v1:bluemix:public:power-iaas:lon06:a/094f4214c75941f991da601b001df1fe:b6297e60-d0fe-4e24-8b15-276cf0645737::") + detailsDrModel.CRN = core.StringPtr("crn:v1:bluemix:public:power-iaas:lon06:a/094f4214c75941f991da601b001df1fe:b6297e60-d0fe-4e24-8b15-276cf0645737::") locationDrModel := new(drautomationservicev1.LocationDr) locationDrModel.Region = core.StringPtr("lon06") locationDrModel.Type = core.StringPtr("data-center") locationDrModel.URL = core.StringPtr("https://lon.power-iaas.cloud.ibm.com") - model := new(drautomationservicev1.DRStandbyWorkspace) + model := new(drautomationservicev1.DrStandbyWorkspace) model.Details = detailsDrModel model.ID = core.StringPtr("testString") model.Location = locationDrModel @@ -99,7 +100,7 @@ func TestDataSourceIbmPdrWorkspaceSchematicDetailsDrToMap(t *testing.T) { } model := new(drautomationservicev1.DetailsDr) - model.Crn = core.StringPtr("crn:v1:bluemix:public:power-iaas:lon06:a/094f4214c75941f991da601b001df1fe:b6297e60-d0fe-4e24-8b15-276cf0645737::") + model.CRN = core.StringPtr("crn:v1:bluemix:public:power-iaas:lon06:a/094f4214c75941f991da601b001df1fe:b6297e60-d0fe-4e24-8b15-276cf0645737::") result, err := drautomationservice.DataSourceIbmPdrWorkspaceSchematicDetailsDrToMap(model) assert.Nil(t, err) @@ -148,14 +149,14 @@ func TestDataSourceIbmPdrWorkspaceSchematicDRWorkspaceToMap(t *testing.T) { } detailsDrModel := new(drautomationservicev1.DetailsDr) - detailsDrModel.Crn = core.StringPtr("crn:v1:bluemix:public:power-iaas:lon06:a/094f4214c75941f991da601b001df1fe:b6297e60-d0fe-4e24-8b15-276cf0645737::") + detailsDrModel.CRN = core.StringPtr("crn:v1:bluemix:public:power-iaas:lon06:a/094f4214c75941f991da601b001df1fe:b6297e60-d0fe-4e24-8b15-276cf0645737::") locationDrModel := new(drautomationservicev1.LocationDr) locationDrModel.Region = core.StringPtr("lon06") locationDrModel.Type = core.StringPtr("data-center") locationDrModel.URL = core.StringPtr("https://lon.power-iaas.cloud.ibm.com") - model := new(drautomationservicev1.DRWorkspace) + model := new(drautomationservicev1.DrWorkspace) model.Default = core.BoolPtr(true) model.Details = detailsDrModel model.ID = core.StringPtr("testString") diff --git a/ibm/service/drautomationservice/resource_ibm_pdr_managedr.go b/ibm/service/drautomationservice/resource_ibm_pdr_managedr.go index ad641de2e7..da15c00cac 100644 --- a/ibm/service/drautomationservice/resource_ibm_pdr_managedr.go +++ b/ibm/service/drautomationservice/resource_ibm_pdr_managedr.go @@ -88,7 +88,7 @@ func ResourceIbmPdrManagedr() *schema.Resource { ForceNew: true, Optional: true, }, - "enable_ha": { + "orchestrator_ha": { Type: schema.TypeBool, Optional: true, ForceNew: true, @@ -108,7 +108,7 @@ func ResourceIbmPdrManagedr() *schema.Resource { Optional: true, ForceNew: true, }, - "orchestrator_cluster_type": { + "orchestrator_location_type": { Type: schema.TypeString, Optional: true, ForceNew: true, @@ -260,13 +260,14 @@ func resourceIbmPdrManagedrCreate(context context.Context, d *schema.ResourceDat createManageDrOptions.SetAction(d.Get("action").(string)) } if _, ok := d.GetOk("api_key"); ok { - createManageDrOptions.SetApiKey(d.Get("api_key").(string)) + createManageDrOptions.SetAPIKey(d.Get("api_key").(string)) } - if _, ok := d.GetOk("enable_ha"); ok { - createManageDrOptions.SetEnableHa(d.Get("enable_ha").(bool)) + if v, ok := d.GetOk("orchestrator_ha"); ok { + enableHA := v.(bool) + createManageDrOptions.OrchestratorHa = core.BoolPtr(enableHA) } if _, ok := d.GetOk("guid"); ok { - createManageDrOptions.SetGuid(d.Get("guid").(string)) + createManageDrOptions.SetGUID(d.Get("guid").(string)) } if _, ok := d.GetOk("location_id"); ok { createManageDrOptions.SetLocationID(d.Get("location_id").(string)) @@ -274,8 +275,8 @@ func resourceIbmPdrManagedrCreate(context context.Context, d *schema.ResourceDat if _, ok := d.GetOk("machine_type"); ok { createManageDrOptions.SetMachineType(d.Get("machine_type").(string)) } - if _, ok := d.GetOk("orchestrator_cluster_type"); ok { - createManageDrOptions.SetOrchestratorClusterType(d.Get("orchestrator_cluster_type").(string)) + if _, ok := d.GetOk("orchestrator_location_type"); ok { + createManageDrOptions.SetOrchestratorLocationType(d.Get("orchestrator_location_type").(string)) } if _, ok := d.GetOk("orchestrator_name"); ok { createManageDrOptions.SetOrchestratorName(d.Get("orchestrator_name").(string)) @@ -290,7 +291,7 @@ func resourceIbmPdrManagedrCreate(context context.Context, d *schema.ResourceDat createManageDrOptions.SetOrchestratorWorkspaceLocation(d.Get("orchestrator_workspace_location").(string)) } if _, ok := d.GetOk("proxy_ip"); ok { - createManageDrOptions.SetProxyIp(d.Get("proxy_ip").(string)) + createManageDrOptions.SetProxyIP(d.Get("proxy_ip").(string)) } if _, ok := d.GetOk("region_id"); ok { createManageDrOptions.SetRegionID(d.Get("region_id").(string)) @@ -311,10 +312,7 @@ func resourceIbmPdrManagedrCreate(context context.Context, d *schema.ResourceDat createManageDrOptions.SetSecretGroup(d.Get("secret_group").(string)) } if _, ok := d.GetOk("ssh_key_name"); ok { - createManageDrOptions.SetSshKeyName(d.Get("ssh_key_name").(string)) - } - if _, ok := d.GetOk("ssh_public_key"); ok { - createManageDrOptions.SetSshPublicKey(d.Get("ssh_public_key").(string)) + createManageDrOptions.SetSSHKeyName(d.Get("ssh_key_name").(string)) } if _, ok := d.GetOk("standby_machine_type"); ok { createManageDrOptions.SetStandbyMachineType(d.Get("standby_machine_type").(string)) @@ -341,7 +339,7 @@ func resourceIbmPdrManagedrCreate(context context.Context, d *schema.ResourceDat createManageDrOptions.SetTransitGatewayID(d.Get("transit_gateway_id").(string)) } if _, ok := d.GetOk("vpc_id"); ok { - createManageDrOptions.SetVpcID(d.Get("vpc_id").(string)) + createManageDrOptions.SetVPCID(d.Get("vpc_id").(string)) } if _, ok := d.GetOk("accept_language"); ok { createManageDrOptions.SetAcceptLanguage(d.Get("accept_language").(string)) @@ -375,13 +373,18 @@ func resourceIbmPdrManagedrRead(context context.Context, d *schema.ResourceData, getManageDrOptions := &drautomationservicev1.GetManageDrOptions{} - parts, err := flex.SepIdParts(d.Id(), "/") - if err != nil { - return flex.DiscriminatedTerraformErrorf(err, err.Error(), "ibm_pdr_managedr", "read", "sep-id-parts").GetDiag() - } + // parts, err := flex.SepIdParts(d.Id(), "/") + // if err != nil { + // return flex.DiscriminatedTerraformErrorf(err, err.Error(), "ibm_pdr_managedr", "read", "sep-id-parts").GetDiag() + // } + instanceID := d.Get("instance_id").(string) + + log.Printf("[DEBUG] Read operation using instance ID from resource: %s", instanceID) + + getManageDrOptions.SetInstanceID(instanceID) - getManageDrOptions.SetInstanceID(parts[0]) - getManageDrOptions.SetInstanceID(parts[1]) + // getManageDrOptions.SetInstanceID(parts[0]) + // getManageDrOptions.SetInstanceID(parts[1]) if _, ok := d.GetOk("accept_language"); ok { getManageDrOptions.SetAcceptLanguage(d.Get("accept_language").(string)) } diff --git a/ibm/service/drautomationservice/resource_ibm_pdr_managedr_test.go b/ibm/service/drautomationservice/resource_ibm_pdr_managedr_test.go index a106f5c5c7..b55e645b1b 100644 --- a/ibm/service/drautomationservice/resource_ibm_pdr_managedr_test.go +++ b/ibm/service/drautomationservice/resource_ibm_pdr_managedr_test.go @@ -6,8 +6,11 @@ package drautomationservice_test import ( "fmt" "testing" + "time" + + // "github.com/hashicorp/terraform-plugin-testing/helper/acctest" + "math/rand" - "github.com/hashicorp/terraform-plugin-testing/helper/acctest" "github.com/hashicorp/terraform-plugin-testing/helper/resource" "github.com/hashicorp/terraform-plugin-testing/terraform" @@ -18,7 +21,7 @@ import ( ) func TestAccIbmPdrManagedrBasic(t *testing.T) { - var conf drautomationservicev1.ServiceInstanceManageDR + var conf drautomationservicev1.ServiceInstanceManageDr instanceID := "crn:v1:staging:public:power-dr-automation:global:a/a09202c1bfb04ceebfb4a9fd38c87721:050ebe3b-13f4-4db8-8ece-501a3c13be0965822::" standByRedeploy := "false" @@ -40,11 +43,14 @@ func TestAccIbmPdrManagedrBasic(t *testing.T) { } func TestAccIbmPdrManagedrAllArgs(t *testing.T) { - var conf drautomationservicev1.ServiceInstanceManageDR + var conf drautomationservicev1.ServiceInstanceManageDr instanceID := "crn:v1:staging:public:power-dr-automation:global:a/a09202c1bfb04ceebfb4a9fd38c87721:050ebe3b-13f4-4db8-8ece-501a3c13be0965822::" standByRedeploy := "false" - acceptLanguage := fmt.Sprintf("tf_accept_language_%d", acctest.RandIntRange(10, 100)) - ifNoneMatch := fmt.Sprintf("tf_if_none_match_%d", acctest.RandIntRange(10, 100)) + rand.Seed(time.Now().UnixNano()) + acceptLanguage := fmt.Sprintf("tf_accept_language_%d", rand.Intn(90)+10) + ifNoneMatch := fmt.Sprintf("tf_if_none_match_%d", rand.Intn(90)+10) + // acceptLanguage := fmt.Sprintf("tf_accept_language_%d", acc.RandIntRange(10, 100)) + // ifNoneMatch := fmt.Sprintf("tf_if_none_match_%d", acc.RandIntRange(10, 100)) acceptsIncomplete := "true" resource.Test(t, resource.TestCase{ @@ -125,7 +131,7 @@ func testAccCheckIbmPdrManagedrConfig(instanceID string, standByRedeploy string, `, instanceID, standByRedeploy, acceptLanguage, ifNoneMatch, acceptsIncomplete) } -func testAccCheckIbmPdrManagedrExists(n string, obj drautomationservicev1.ServiceInstanceManageDR) resource.TestCheckFunc { +func testAccCheckIbmPdrManagedrExists(n string, obj drautomationservicev1.ServiceInstanceManageDr) resource.TestCheckFunc { return func(s *terraform.State) error { rs, ok := s.RootModule().Resources[n] diff --git a/ibm/service/drautomationservice/resource_ibm_pdr_validate_apikey.go b/ibm/service/drautomationservice/resource_ibm_pdr_validate_apikey.go index f9840f47fe..b18f5cb007 100644 --- a/ibm/service/drautomationservice/resource_ibm_pdr_validate_apikey.go +++ b/ibm/service/drautomationservice/resource_ibm_pdr_validate_apikey.go @@ -31,9 +31,9 @@ func ResourceIbmPdrValidateApikey() *schema.Resource { Schema: map[string]*schema.Schema{ "instance_id": &schema.Schema{ - Type: schema.TypeString, - Required: true, - ForceNew: true, + Type: schema.TypeString, + Required: true, + // ForceNew: true, Description: "instance id of instance to provision.", }, "accept_language": &schema.Schema{ @@ -42,9 +42,10 @@ func ResourceIbmPdrValidateApikey() *schema.Resource { Description: "The language requested for the return document.", }, "api_key": &schema.Schema{ - Type: schema.TypeString, - Required: true, - ForceNew: true, + Type: schema.TypeString, + Required: true, + // ForceNew: true, + Sensitive: true, Description: "api key", }, "if_none_match": &schema.Schema{ @@ -83,10 +84,10 @@ func resourceIbmPdrValidateApikeyCreate(context context.Context, d *schema.Resou return tfErr.GetDiag() } - createServiceInstanceKeyValidationOptions := &drautomationservicev1.CreateServiceInstanceKeyValidationOptions{} + createServiceInstanceKeyValidationOptions := &drautomationservicev1.CreateApikeyOptions{} createServiceInstanceKeyValidationOptions.SetInstanceID(d.Get("instance_id").(string)) - createServiceInstanceKeyValidationOptions.SetApiKey(d.Get("api_key").(string)) + createServiceInstanceKeyValidationOptions.SetAPIKey(d.Get("api_key").(string)) if _, ok := d.GetOk("accept_language"); ok { createServiceInstanceKeyValidationOptions.SetAcceptLanguage(d.Get("accept_language").(string)) } @@ -94,7 +95,7 @@ func resourceIbmPdrValidateApikeyCreate(context context.Context, d *schema.Resou createServiceInstanceKeyValidationOptions.SetIfNoneMatch(d.Get("if_none_match").(string)) } - validationKeyResponse, _, err := drAutomationServiceClient.CreateServiceInstanceKeyValidationWithContext(context, createServiceInstanceKeyValidationOptions) + validationKeyResponse, _, err := drAutomationServiceClient.Clone().CreateApikeyWithContext(context, createServiceInstanceKeyValidationOptions) if err != nil { tfErr := flex.TerraformErrorf(err, fmt.Sprintf("CreateServiceInstanceKeyValidationWithContext failed: %s", err.Error()), "ibm_pdr_validate_apikey", "create") log.Printf("[DEBUG]\n%s", tfErr.GetDebugMessage()) @@ -118,15 +119,21 @@ func resourceIbmPdrValidateApikeyRead(context context.Context, d *schema.Resourc return tfErr.GetDiag() } - getServiceInstanceKeyV1Options := &drautomationservicev1.GetServiceInstanceKeyV1Options{} + getServiceInstanceKeyV1Options := &drautomationservicev1.GetApikeyOptions{} - parts, err := flex.SepIdParts(d.Id(), "/") - if err != nil { - return flex.DiscriminatedTerraformErrorf(err, err.Error(), "ibm_pdr_validate_apikey", "read", "sep-id-parts").GetDiag() - } + instanceID := d.Get("instance_id").(string) + + log.Printf("[DEBUG] Read operation using instance ID from resource: %s", instanceID) + + getServiceInstanceKeyV1Options.SetInstanceID(instanceID) + + // parts, err := flex.SepIdParts(d.Id(), "/") + // if err != nil { + // return flex.DiscriminatedTerraformErrorf(err, err.Error(), "ibm_pdr_validate_apikey", "read", "sep-id-parts").GetDiag() + // } - getServiceInstanceKeyV1Options.SetInstanceID(parts[0]) - getServiceInstanceKeyV1Options.SetInstanceID(parts[1]) + // getServiceInstanceKeyV1Options.SetInstanceID(parts[0]) + // getServiceInstanceKeyV1Options.SetInstanceID(parts[1]) if _, ok := d.GetOk("accept_language"); ok { getServiceInstanceKeyV1Options.SetAcceptLanguage(d.Get("accept_language").(string)) } @@ -134,7 +141,7 @@ func resourceIbmPdrValidateApikeyRead(context context.Context, d *schema.Resourc getServiceInstanceKeyV1Options.SetIfNoneMatch(d.Get("if_none_match").(string)) } - validationKeyResponse, response, err := drAutomationServiceClient.GetServiceInstanceKeyV1WithContext(context, getServiceInstanceKeyV1Options) + validationKeyResponse, response, err := drAutomationServiceClient.GetApikeyWithContext(context, getServiceInstanceKeyV1Options) if err != nil { if response != nil && response.StatusCode == 404 { d.SetId("") @@ -178,7 +185,7 @@ func resourceIbmPdrValidateApikeyUpdate(context context.Context, d *schema.Resou return tfErr.GetDiag() } - replaceServiceInstanceApiKeyOptions := &drautomationservicev1.ReplaceServiceInstanceApiKeyOptions{} + replaceServiceInstanceApiKeyOptions := &drautomationservicev1.UpdateApikeyOptions{} parts, err := flex.SepIdParts(d.Id(), "/") if err != nil { @@ -194,9 +201,9 @@ func resourceIbmPdrValidateApikeyUpdate(context context.Context, d *schema.Resou if _, ok := d.GetOk("if_none_match"); ok { replaceServiceInstanceApiKeyOptions.SetIfNoneMatch(d.Get("if_none_match").(string)) } - replaceServiceInstanceApiKeyOptions.SetApiKey(d.Get("api_key").(string)) + replaceServiceInstanceApiKeyOptions.SetAPIKey(d.Get("api_key").(string)) - _, _, err = drAutomationServiceClient.ReplaceServiceInstanceApiKeyWithContext(context, replaceServiceInstanceApiKeyOptions) + _, _, err = drAutomationServiceClient.UpdateApikeyWithContext(context, replaceServiceInstanceApiKeyOptions) if err != nil { tfErr := flex.TerraformErrorf(err, fmt.Sprintf("ReplaceServiceInstanceApiKeyWithContext failed: %s", err.Error()), "ibm_pdr_validate_apikey", "update") log.Printf("[DEBUG]\n%s", tfErr.GetDebugMessage()) diff --git a/ibm/service/drautomationservice/resource_ibm_pdr_validate_apikey_test.go b/ibm/service/drautomationservice/resource_ibm_pdr_validate_apikey_test.go index 65bbcafe01..592c07d52c 100644 --- a/ibm/service/drautomationservice/resource_ibm_pdr_validate_apikey_test.go +++ b/ibm/service/drautomationservice/resource_ibm_pdr_validate_apikey_test.go @@ -80,7 +80,7 @@ func testAccCheckIbmPdrValidateApikeyConfigBasic(instanceID string) string { return fmt.Sprintf(` resource "ibm_pdr_validate_apikey" "pdr_validate_apikey_instance" { instance_id = "%s" - api_key = "azGTysdgsvameQEAhya_1_fD" + api_key = "sdfasfasdfasd" } `, instanceID) } @@ -110,7 +110,7 @@ func testAccCheckIbmPdrValidateApikeyExists(n string, obj drautomationservicev1. return err } - getServiceInstanceKeyV1Options := &drautomationservicev1.GetServiceInstanceKeyV1Options{} + getServiceInstanceKeyV1Options := &drautomationservicev1.GetApikeyOptions{} // parts, err := flex.SepIdParts(rs.Primary.ID, "/") // if err != nil { @@ -120,7 +120,7 @@ func testAccCheckIbmPdrValidateApikeyExists(n string, obj drautomationservicev1. // getServiceInstanceKeyV1Options.SetInstanceID(parts[0]) getServiceInstanceKeyV1Options.SetInstanceID(rs.Primary.ID) - validationKeyResponse, _, err := drAutomationServiceClient.GetServiceInstanceKeyV1(getServiceInstanceKeyV1Options) + validationKeyResponse, _, err := drAutomationServiceClient.GetApikey(getServiceInstanceKeyV1Options) if err != nil { return err } @@ -140,7 +140,7 @@ func testAccCheckIbmPdrValidateApikeyDestroy(s *terraform.State) error { continue } - getServiceInstanceKeyV1Options := &drautomationservicev1.GetServiceInstanceKeyV1Options{} + getServiceInstanceKeyV1Options := &drautomationservicev1.GetApikeyOptions{} parts, err := flex.SepIdParts(rs.Primary.ID, "/") if err != nil { @@ -148,7 +148,7 @@ func testAccCheckIbmPdrValidateApikeyDestroy(s *terraform.State) error { } getServiceInstanceKeyV1Options.SetInstanceID(fmt.Sprintf("%s/%s", parts[0], parts[1])) // Try to find the key - _, response, err := drAutomationServiceClient.GetServiceInstanceKeyV1(getServiceInstanceKeyV1Options) + _, response, err := drAutomationServiceClient.GetApikey(getServiceInstanceKeyV1Options) fmt.Println(response) if err == nil { return fmt.Errorf("pdr_validate_apikey still exists: %s", rs.Primary.ID) From 10d16fc25ae7d2ff66d87f3953a808a939a3df83 Mon Sep 17 00:00:00 2001 From: Mani-Raj-Langaru1 Date: Tue, 4 Nov 2025 07:51:11 -0500 Subject: [PATCH 03/13] addressed the comments and updated the Terraform apis --- ibm/provider/provider.go | 22 +- .../data_source_ibm_pdr_get_dr_locations.go | 52 +-- ...ta_source_ibm_pdr_get_dr_locations_test.go | 10 +- ..._source_ibm_pdr_get_dr_summary_response.go | 90 +++-- ...ce_ibm_pdr_get_dr_summary_response_test.go | 29 +- .../data_source_ibm_pdr_get_event.go | 43 ++- .../data_source_ibm_pdr_get_event_test.go | 10 +- .../data_source_ibm_pdr_get_events.go | 48 ++- .../data_source_ibm_pdr_get_events_test.go | 14 +- ...a_source_ibm_pdr_get_grs_location_pairs.go | 95 +++++ ...rce_ibm_pdr_get_grs_location_pairs_test.go | 41 +++ .../data_source_ibm_pdr_get_machine_types.go | 98 ++++-- ...a_source_ibm_pdr_get_machine_types_test.go | 9 +- ...data_source_ibm_pdr_get_managed_vm_list.go | 56 +-- ...source_ibm_pdr_get_managed_vm_list_test.go | 10 +- ...a_source_ibm_pdr_get_powervs_workspace.go} | 101 +++--- ...rce_ibm_pdr_get_powervs_workspace_test.go} | 41 ++- .../data_source_ibm_pdr_last_operation.go | 78 +++-- ...data_source_ibm_pdr_last_operation_test.go | 13 +- ...ata_source_ibm_pdr_schematic_workspaces.go | 192 ----------- ...ource_ibm_pdr_schematic_workspaces_test.go | 103 ------ ...ata_source_ibm_pdr_workspace_custom_vpc.go | 325 ------------------ ...ource_ibm_pdr_workspace_custom_vpc_test.go | 172 --------- .../resource_ibm_pdr_managedr.go | 269 +++++++++++---- .../resource_ibm_pdr_managedr_test.go | 87 ++--- .../resource_ibm_pdr_validate_apikey.go | 146 ++++---- .../resource_ibm_pdr_validate_apikey_test.go | 59 ++-- .../d/pdr_get_deployment_status.html.markdown | 45 +++ .../docs/d/pdr_get_dr_locations.html.markdown | 37 ++ .../pdr_get_dr_summary_response.html.markdown | 75 ++++ website/docs/d/pdr_get_event.html.markdown | 50 +++ website/docs/d/pdr_get_events.html.markdown | 57 +++ .../pdr_get_grs_location_pairs.html.markdown | 34 ++ .../d/pdr_get_machine_types.html.markdown | 38 ++ .../d/pdr_get_managed_vm_list.html.markdown | 34 ++ .../d/pdr_get_powervs_workspace.html.markdown | 63 ++++ .../docs/d/pdr_last_operation.html.markdown | 53 +++ .../d/pdr_schematic_workspaces.html.markdown | 45 +++ .../d/pdr_validate_clustertype.html.markdown | 37 ++ .../docs/d/pdr_validate_proxyip.html.markdown | 42 +++ .../d/pdr_validate_workspace.html.markdown | 40 +++ .../d/pdr_workspace_custom_vpc.html.markdown | 66 ++++ .../d/pdr_workspace_schematic.html.markdown | 65 ++++ website/docs/r/pdr_managedr.html.markdown | 240 +++++++++++++ .../docs/r/pdr_validate_apikey.html.markdown | 53 +++ 45 files changed, 1956 insertions(+), 1331 deletions(-) create mode 100644 ibm/service/drautomationservice/data_source_ibm_pdr_get_grs_location_pairs.go create mode 100644 ibm/service/drautomationservice/data_source_ibm_pdr_get_grs_location_pairs_test.go rename ibm/service/drautomationservice/{data_source_ibm_pdr_workspace_schematic.go => data_source_ibm_pdr_get_powervs_workspace.go} (65%) rename ibm/service/drautomationservice/{data_source_ibm_pdr_workspace_schematic_test.go => data_source_ibm_pdr_get_powervs_workspace_test.go} (74%) delete mode 100644 ibm/service/drautomationservice/data_source_ibm_pdr_schematic_workspaces.go delete mode 100644 ibm/service/drautomationservice/data_source_ibm_pdr_schematic_workspaces_test.go delete mode 100644 ibm/service/drautomationservice/data_source_ibm_pdr_workspace_custom_vpc.go delete mode 100644 ibm/service/drautomationservice/data_source_ibm_pdr_workspace_custom_vpc_test.go create mode 100755 website/docs/d/pdr_get_deployment_status.html.markdown create mode 100644 website/docs/d/pdr_get_dr_locations.html.markdown create mode 100755 website/docs/d/pdr_get_dr_summary_response.html.markdown create mode 100755 website/docs/d/pdr_get_event.html.markdown create mode 100755 website/docs/d/pdr_get_events.html.markdown create mode 100644 website/docs/d/pdr_get_grs_location_pairs.html.markdown create mode 100755 website/docs/d/pdr_get_machine_types.html.markdown create mode 100755 website/docs/d/pdr_get_managed_vm_list.html.markdown create mode 100644 website/docs/d/pdr_get_powervs_workspace.html.markdown create mode 100755 website/docs/d/pdr_last_operation.html.markdown create mode 100644 website/docs/d/pdr_schematic_workspaces.html.markdown create mode 100755 website/docs/d/pdr_validate_clustertype.html.markdown create mode 100755 website/docs/d/pdr_validate_proxyip.html.markdown create mode 100755 website/docs/d/pdr_validate_workspace.html.markdown create mode 100644 website/docs/d/pdr_workspace_custom_vpc.html.markdown create mode 100644 website/docs/d/pdr_workspace_schematic.html.markdown create mode 100755 website/docs/r/pdr_managedr.html.markdown create mode 100755 website/docs/r/pdr_validate_apikey.html.markdown diff --git a/ibm/provider/provider.go b/ibm/provider/provider.go index 11b97562a3..a891f86b00 100644 --- a/ibm/provider/provider.go +++ b/ibm/provider/provider.go @@ -1101,16 +1101,14 @@ func Provider() *schema.Provider { "ibm_logs_router_targets": logsrouting.DataSourceIBMLogsRouterTargets(), // DR Automation Service - "ibm_pdr_get_dr_summary_response": drautomationservice.DataSourceIbmPdrGetDrSummaryResponse(), - "ibm_pdr_workspace_schematic": drautomationservice.DataSourceIbmPdrWorkspaceSchematic(), - "ibm_pdr_workspace_custom_vpc": drautomationservice.DataSourceIbmPdrWorkspaceCustomVpc(), - "ibm_pdr_get_event": drautomationservice.DataSourceIbmPdrGetEvent(), - "ibm_pdr_get_events": drautomationservice.DataSourceIbmPdrGetEvents(), - "ibm_pdr_get_dr_locations": drautomationservice.DataSourceIbmPdrGetDrLocations(), - "ibm_pdr_get_machine_types": drautomationservice.DataSourceIbmPdrGetMachineTypes(), - "ibm_pdr_get_managed_vm_list": drautomationservice.DataSourceIbmPdrGetManagedVmList(), - "ibm_pdr_schematic_workspaces": drautomationservice.DataSourceIbmPdrSchematicWorkspaces(), - "ibm_pdr_last_operation": drautomationservice.DataSourceIbmPdrLastOperation(), + "ibm_pdr_get_dr_summary_response": drautomationservice.DataSourceIBMPdrGetDrSummaryResponse(), + "ibm_pdr_get_powervs_workspace": drautomationservice.DataSourceIBMPdrGetPowervsWorkspace(), + "ibm_pdr_get_event": drautomationservice.DataSourceIBMPdrGetEvent(), + "ibm_pdr_get_events": drautomationservice.DataSourceIBMPdrGetEvents(), + "ibm_pdr_get_dr_locations": drautomationservice.DataSourceIBMPdrGetDrLocations(), + "ibm_pdr_get_machine_types": drautomationservice.DataSourceIBMPdrGetMachineTypes(), + "ibm_pdr_get_managed_vm_list": drautomationservice.DataSourceIBMPdrGetManagedVMList(), + "ibm_pdr_last_operation": drautomationservice.DataSourceIBMPdrLastOperation(), }, ResourcesMap: map[string]*schema.Resource{ @@ -1782,8 +1780,8 @@ func Provider() *schema.Provider { "ibm_logs_router_tenant": logsrouting.ResourceIBMLogsRouterTenant(), // DR Automation Service - "ibm_pdr_managedr": drautomationservice.ResourceIbmPdrManagedr(), - "ibm_pdr_validate_apikey": drautomationservice.ResourceIbmPdrValidateApikey(), + "ibm_pdr_managedr": drautomationservice.ResourceIbmPdrManagedr(), + "ibm_pdr_validate_apikey": drautomationservice.ResourceIBMPdrValidateApikey(), }, ConfigureFunc: providerConfigure, diff --git a/ibm/service/drautomationservice/data_source_ibm_pdr_get_dr_locations.go b/ibm/service/drautomationservice/data_source_ibm_pdr_get_dr_locations.go index 5edfdaae97..02f7b13019 100644 --- a/ibm/service/drautomationservice/data_source_ibm_pdr_get_dr_locations.go +++ b/ibm/service/drautomationservice/data_source_ibm_pdr_get_dr_locations.go @@ -3,7 +3,7 @@ /* * IBM OpenAPI Terraform Generator Version: 3.105.0-3c13b041-20250605-193116 -*/ + */ package drautomationservice @@ -11,7 +11,6 @@ import ( "context" "fmt" "log" - "time" "github.com/hashicorp/terraform-plugin-sdk/v2/diag" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" @@ -21,9 +20,9 @@ import ( "github.ibm.com/DRAutomation/dra-go-sdk/drautomationservicev1" ) -func DataSourceIbmPdrGetDrLocations() *schema.Resource { +func DataSourceIBMPdrGetDrLocations() *schema.Resource { return &schema.Resource{ - ReadContext: dataSourceIbmPdrGetDrLocationsRead, + ReadContext: dataSourceIBMPdrGetDrLocationsRead, Schema: map[string]*schema.Schema{ "instance_id": &schema.Schema{ @@ -36,11 +35,6 @@ func DataSourceIbmPdrGetDrLocations() *schema.Resource { Optional: true, Description: "The language requested for the return document.", }, - "if_none_match": &schema.Schema{ - Type: schema.TypeString, - Optional: true, - Description: "ETag for conditional requests (optional).", - }, "dr_locations": &schema.Schema{ Type: schema.TypeList, Computed: true, @@ -64,7 +58,7 @@ func DataSourceIbmPdrGetDrLocations() *schema.Resource { } } -func dataSourceIbmPdrGetDrLocationsRead(context context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { +func dataSourceIBMPdrGetDrLocationsRead(context context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { drAutomationServiceClient, err := meta.(conns.ClientSession).DrAutomationServiceV1() if err != nil { tfErr := flex.DiscriminatedTerraformErrorf(err, err.Error(), "(Data) ibm_pdr_get_dr_locations", "read", "initialize-client") @@ -75,30 +69,38 @@ func dataSourceIbmPdrGetDrLocationsRead(context context.Context, d *schema.Resou getDrLocationsOptions := &drautomationservicev1.GetDrLocationsOptions{} getDrLocationsOptions.SetInstanceID(d.Get("instance_id").(string)) - if _, ok := d.GetOk("accept_language"); ok { - getDrLocationsOptions.SetAcceptLanguage(d.Get("accept_language").(string)) - } - if _, ok := d.GetOk("if_none_match"); ok { - getDrLocationsOptions.SetIfNoneMatch(d.Get("if_none_match").(string)) - } - getDrLocationsResponse, _, err := drAutomationServiceClient.GetDrLocationsWithContext(context, getDrLocationsOptions) + getDrLocationsResponse, response, err := drAutomationServiceClient.GetDrLocationsWithContext(context, getDrLocationsOptions) + if err != nil { - tfErr := flex.TerraformErrorf(err, fmt.Sprintf("GetDrLocationsWithContext failed: %s", err.Error()), "(Data) ibm_pdr_get_dr_locations", "read") - log.Printf("[DEBUG]\n%s", tfErr.GetDebugMessage()) + detailedMsg := fmt.Sprintf("GetDrLocationsWithContext failed: %s", err.Error()) + // Include HTTP status & raw body if available + if response != nil { + detailedMsg = fmt.Sprintf( + "GetDrLocations failed: %s (status: %d, response: %s)", + err.Error(), response.StatusCode, response.Result, + ) + } + tfErr := flex.TerraformErrorf(err, detailedMsg, "(Data) ibm_pdr_get_dr_locations", "read") + log.Printf("[ERROR] %s", detailedMsg) return tfErr.GetDiag() } - d.SetId(dataSourceIbmPdrGetDrLocationsID(d)) + d.SetId(dataSourceIBMPdrGetDrLocationsID(d)) + + if _, ok := d.GetOk("accept_language"); ok { + getDrLocationsOptions.SetAcceptLanguage(d.Get("accept_language").(string)) + } drLocations := []map[string]interface{}{} for _, drLocationsItem := range getDrLocationsResponse.DrLocations { - drLocationsItemMap, err := DataSourceIbmPdrGetDrLocationsDrLocationToMap(&drLocationsItem) // #nosec G601 + drLocationsItemMap, err := DataSourceIBMPdrGetDrLocationsDrLocationToMap(&drLocationsItem) // #nosec G601 if err != nil { return flex.DiscriminatedTerraformErrorf(err, err.Error(), "(Data) ibm_pdr_get_dr_locations", "read", "dr_locations-to-map").GetDiag() } drLocations = append(drLocations, drLocationsItemMap) } + if err = d.Set("dr_locations", drLocations); err != nil { return flex.DiscriminatedTerraformErrorf(err, fmt.Sprintf("Error setting dr_locations: %s", err), "(Data) ibm_pdr_get_dr_locations", "read", "set-dr_locations").GetDiag() } @@ -106,12 +108,12 @@ func dataSourceIbmPdrGetDrLocationsRead(context context.Context, d *schema.Resou return nil } -// dataSourceIbmPdrGetDrLocationsID returns a reasonable ID for the list. -func dataSourceIbmPdrGetDrLocationsID(d *schema.ResourceData) string { - return time.Now().UTC().String() +// dataSourceIBMPdrGetDrLocationsID returns a reasonable ID for the list. +func dataSourceIBMPdrGetDrLocationsID(d *schema.ResourceData) string { + return d.Get("instance_id").(string) } -func DataSourceIbmPdrGetDrLocationsDrLocationToMap(model *drautomationservicev1.DrLocation) (map[string]interface{}, error) { +func DataSourceIBMPdrGetDrLocationsDrLocationToMap(model *drautomationservicev1.DrLocation) (map[string]interface{}, error) { modelMap := make(map[string]interface{}) if model.ID != nil { modelMap["id"] = *model.ID diff --git a/ibm/service/drautomationservice/data_source_ibm_pdr_get_dr_locations_test.go b/ibm/service/drautomationservice/data_source_ibm_pdr_get_dr_locations_test.go index d0707b268b..24ca6dc209 100644 --- a/ibm/service/drautomationservice/data_source_ibm_pdr_get_dr_locations_test.go +++ b/ibm/service/drautomationservice/data_source_ibm_pdr_get_dr_locations_test.go @@ -20,13 +20,13 @@ import ( acc "github.com/IBM-Cloud/terraform-provider-ibm/ibm/acctest" ) -func TestAccIbmPdrGetDrLocationsDataSourceBasic(t *testing.T) { +func TestAccIBMPdrGetDrLocationsDataSourceBasic(t *testing.T) { resource.Test(t, resource.TestCase{ PreCheck: func() { acc.TestAccPreCheck(t) }, Providers: acc.TestAccProviders, Steps: []resource.TestStep{ resource.TestStep{ - Config: testAccCheckIbmPdrGetDrLocationsDataSourceConfigBasic(), + Config: testAccCheckIBMPdrGetDrLocationsDataSourceConfigBasic(), Check: resource.ComposeTestCheckFunc( resource.TestCheckResourceAttrSet("data.ibm_pdr_get_dr_locations.pdr_get_dr_locations_instance", "id"), resource.TestCheckResourceAttrSet("data.ibm_pdr_get_dr_locations.pdr_get_dr_locations_instance", "instance_id"), @@ -37,7 +37,7 @@ func TestAccIbmPdrGetDrLocationsDataSourceBasic(t *testing.T) { }) } -func testAccCheckIbmPdrGetDrLocationsDataSourceConfigBasic() string { +func testAccCheckIBMPdrGetDrLocationsDataSourceConfigBasic() string { return fmt.Sprintf(` data "ibm_pdr_get_dr_locations" "pdr_get_dr_locations_instance" { instance_id = "crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::" @@ -46,7 +46,7 @@ func testAccCheckIbmPdrGetDrLocationsDataSourceConfigBasic() string { } -func TestDataSourceIbmPdrGetDrLocationsDrLocationToMap(t *testing.T) { +func TestDataSourceIBMPdrGetDrLocationsDrLocationToMap(t *testing.T) { checkResult := func(result map[string]interface{}) { model := make(map[string]interface{}) model["id"] = "loc123" @@ -59,7 +59,7 @@ func TestDataSourceIbmPdrGetDrLocationsDrLocationToMap(t *testing.T) { model.ID = core.StringPtr("loc123") model.Name = core.StringPtr("US-East-1") - result, err := drautomationservice.DataSourceIbmPdrGetDrLocationsDrLocationToMap(model) + result, err := drautomationservice.DataSourceIBMPdrGetDrLocationsDrLocationToMap(model) assert.Nil(t, err) checkResult(result) } diff --git a/ibm/service/drautomationservice/data_source_ibm_pdr_get_dr_summary_response.go b/ibm/service/drautomationservice/data_source_ibm_pdr_get_dr_summary_response.go index 769c940649..ff8182714a 100644 --- a/ibm/service/drautomationservice/data_source_ibm_pdr_get_dr_summary_response.go +++ b/ibm/service/drautomationservice/data_source_ibm_pdr_get_dr_summary_response.go @@ -11,7 +11,6 @@ import ( "context" "fmt" "log" - "time" "github.com/hashicorp/terraform-plugin-sdk/v2/diag" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" @@ -21,9 +20,9 @@ import ( "github.ibm.com/DRAutomation/dra-go-sdk/drautomationservicev1" ) -func DataSourceIbmPdrGetDrSummaryResponse() *schema.Resource { +func DataSourceIBMPdrGetDrSummaryResponse() *schema.Resource { return &schema.Resource{ - ReadContext: dataSourceIbmPdrGetDrSummaryResponseRead, + ReadContext: dataSourceIBMPdrGetDrSummaryResponseRead, Schema: map[string]*schema.Schema{ "instance_id": &schema.Schema{ @@ -36,11 +35,6 @@ func DataSourceIbmPdrGetDrSummaryResponse() *schema.Resource { Optional: true, Description: "The language requested for the return document.", }, - "if_none_match": &schema.Schema{ - Type: schema.TypeString, - Optional: true, - Description: "ETag for conditional requests (optional).", - }, "managed_vm_list": &schema.Schema{ Type: schema.TypeMap, Computed: true, @@ -55,11 +49,31 @@ func DataSourceIbmPdrGetDrSummaryResponse() *schema.Resource { Description: "Contains details about the orchestrator configuration.", Elem: &schema.Resource{ Schema: map[string]*schema.Schema{ + "last_updated_orchestrator_deployment_time": &schema.Schema{ + Type: schema.TypeString, + Computed: true, + Description: "Deployment time of primary orchestrator VM.", + }, + "last_updated_standby_orchestrator_deployment_time": &schema.Schema{ + Type: schema.TypeString, + Computed: true, + Description: "Deployment time of StandBy orchestrator VM.", + }, + "latest_orchestrator_time": &schema.Schema{ + Type: schema.TypeString, + Computed: true, + Description: "Latest Orchestrator Time in COS.", + }, "location_id": &schema.Schema{ Type: schema.TypeString, Computed: true, Description: "Location identifier.", }, + "mfa_enabled": &schema.Schema{ + Type: schema.TypeString, + Computed: true, + Description: "Multi Factor Authentication Enabled or not.", + }, "orch_ext_connectivity_status": &schema.Schema{ Type: schema.TypeString, Computed: true, @@ -75,11 +89,6 @@ func DataSourceIbmPdrGetDrSummaryResponse() *schema.Resource { Computed: true, Description: "Message regarding orchestrator cluster status.", }, - "orchestrator_cluster_type": &schema.Schema{ - Type: schema.TypeString, - Computed: true, - Description: "Type of orchestrator cluster.", - }, "orchestrator_config_status": &schema.Schema{ Type: schema.TypeString, Computed: true, @@ -90,6 +99,11 @@ func DataSourceIbmPdrGetDrSummaryResponse() *schema.Resource { Computed: true, Description: "Leader node of the orchestrator group.", }, + "orchestrator_location_type": &schema.Schema{ + Type: schema.TypeString, + Computed: true, + Description: "Type of orchestrator Location.", + }, "orchestrator_name": &schema.Schema{ Type: schema.TypeString, Computed: true, @@ -179,6 +193,11 @@ func DataSourceIbmPdrGetDrSummaryResponse() *schema.Resource { Computed: true, Description: "Flag indicating if KSYS HA is enabled.", }, + "plan_name": &schema.Schema{ + Type: schema.TypeString, + Computed: true, + Description: "plan name.", + }, "primary_ip_address": &schema.Schema{ Type: schema.TypeString, Computed: true, @@ -231,7 +250,7 @@ func DataSourceIbmPdrGetDrSummaryResponse() *schema.Resource { } } -func dataSourceIbmPdrGetDrSummaryResponseRead(context context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { +func dataSourceIBMPdrGetDrSummaryResponseRead(context context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { drAutomationServiceClient, err := meta.(conns.ClientSession).DrAutomationServiceV1() if err != nil { tfErr := flex.DiscriminatedTerraformErrorf(err, err.Error(), "(Data) ibm_pdr_get_dr_summary_response", "read", "initialize-client") @@ -245,18 +264,22 @@ func dataSourceIbmPdrGetDrSummaryResponseRead(context context.Context, d *schema if _, ok := d.GetOk("accept_language"); ok { getDrSummaryOptions.SetAcceptLanguage(d.Get("accept_language").(string)) } - if _, ok := d.GetOk("if_none_match"); ok { - getDrSummaryOptions.SetIfNoneMatch(d.Get("if_none_match").(string)) - } - - drAutomationGetSummaryResponse, _, err := drAutomationServiceClient.GetDrSummaryWithContext(context, getDrSummaryOptions) + drAutomationGetSummaryResponse, response, err := drAutomationServiceClient.GetDrSummaryWithContext(context, getDrSummaryOptions) if err != nil { - tfErr := flex.TerraformErrorf(err, fmt.Sprintf("GetDrSummaryWithContext failed: %s", err.Error()), "(Data) ibm_pdr_get_dr_summary_response", "read") - log.Printf("[DEBUG]\n%s", tfErr.GetDebugMessage()) + detailedMsg := fmt.Sprintf("GetDrSummaryWithContext failed: %s", err.Error()) + // Include HTTP status & raw body if available + if response != nil { + detailedMsg = fmt.Sprintf( + "GetDrSummaryWithContext failed: %s (status: %d, response: %s)", + err.Error(), response.StatusCode, response.Result, + ) + } + tfErr := flex.TerraformErrorf(err, detailedMsg, "(Data) ibm_pdr_get_dr_summary_response", "read") + log.Printf("[ERROR] %s", detailedMsg) return tfErr.GetDiag() } - d.SetId(dataSourceIbmPdrGetDrSummaryResponseID(d)) + d.SetId(dataSourceIBMPdrGetDrSummaryResponseID(d)) convertedMap := make(map[string]interface{}, len(drAutomationGetSummaryResponse.ManagedVMList)) for k, v := range drAutomationGetSummaryResponse.ManagedVMList { @@ -267,7 +290,7 @@ func dataSourceIbmPdrGetDrSummaryResponseRead(context context.Context, d *schema } orchestratorDetails := []map[string]interface{}{} - orchestratorDetailsMap, err := DataSourceIbmPdrGetDrSummaryResponseOrchestratorDetailsToMap(drAutomationGetSummaryResponse.OrchestratorDetails) + orchestratorDetailsMap, err := DataSourceIBMPdrGetDrSummaryResponseOrchestratorDetailsToMap(drAutomationGetSummaryResponse.OrchestratorDetails) if err != nil { return flex.DiscriminatedTerraformErrorf(err, err.Error(), "(Data) ibm_pdr_get_dr_summary_response", "read", "orchestrator_details-to-map").GetDiag() } @@ -277,7 +300,7 @@ func dataSourceIbmPdrGetDrSummaryResponseRead(context context.Context, d *schema } serviceDetails := []map[string]interface{}{} - serviceDetailsMap, err := DataSourceIbmPdrGetDrSummaryResponseServiceDetailsToMap(drAutomationGetSummaryResponse.ServiceDetails) + serviceDetailsMap, err := DataSourceIBMPdrGetDrSummaryResponseServiceDetailsToMap(drAutomationGetSummaryResponse.ServiceDetails) if err != nil { return flex.DiscriminatedTerraformErrorf(err, err.Error(), "(Data) ibm_pdr_get_dr_summary_response", "read", "service_details-to-map").GetDiag() } @@ -289,20 +312,26 @@ func dataSourceIbmPdrGetDrSummaryResponseRead(context context.Context, d *schema return nil } -// dataSourceIbmPdrGetDrSummaryResponseID returns a reasonable ID for the list. -func dataSourceIbmPdrGetDrSummaryResponseID(d *schema.ResourceData) string { - return time.Now().UTC().String() +// dataSourceIBMPdrGetDrSummaryResponseID returns a reasonable ID for the list. +func dataSourceIBMPdrGetDrSummaryResponseID(d *schema.ResourceData) string { + return d.Get("instance_id").(string) } -func DataSourceIbmPdrGetDrSummaryResponseOrchestratorDetailsToMap(model *drautomationservicev1.OrchestratorDetails) (map[string]interface{}, error) { +func DataSourceIBMPdrGetDrSummaryResponseOrchestratorDetailsToMap(model *drautomationservicev1.OrchestratorDetails) (map[string]interface{}, error) { modelMap := make(map[string]interface{}) + modelMap["last_updated_orchestrator_deployment_time"] = model.LastUpdatedOrchestratorDeploymentTime.String() + modelMap["last_updated_standby_orchestrator_deployment_time"] = model.LastUpdatedStandbyOrchestratorDeploymentTime.String() + if model.LatestOrchestratorTime != nil { + modelMap["latest_orchestrator_time"] = model.LatestOrchestratorTime.String() + } modelMap["location_id"] = *model.LocationID + modelMap["mfa_enabled"] = *model.MfaEnabled modelMap["orch_ext_connectivity_status"] = *model.OrchExtConnectivityStatus modelMap["orch_standby_node_addition_status"] = *model.OrchStandbyNodeAdditionStatus modelMap["orchestrator_cluster_message"] = *model.OrchestratorClusterMessage - modelMap["orchestrator_cluster_type"] = *model.OrchestratorClusterType modelMap["orchestrator_config_status"] = *model.OrchestratorConfigStatus modelMap["orchestrator_group_leader"] = *model.OrchestratorGroupLeader + modelMap["orchestrator_location_type"] = *model.OrchestratorLocationType modelMap["orchestrator_name"] = *model.OrchestratorName modelMap["orchestrator_status"] = *model.OrchestratorStatus modelMap["orchestrator_workspace_name"] = *model.OrchestratorWorkspaceName @@ -318,12 +347,13 @@ func DataSourceIbmPdrGetDrSummaryResponseOrchestratorDetailsToMap(model *drautom return modelMap, nil } -func DataSourceIbmPdrGetDrSummaryResponseServiceDetailsToMap(model *drautomationservicev1.ServiceDetails) (map[string]interface{}, error) { +func DataSourceIBMPdrGetDrSummaryResponseServiceDetailsToMap(model *drautomationservicev1.ServiceDetails) (map[string]interface{}, error) { modelMap := make(map[string]interface{}) modelMap["crn"] = *model.CRN modelMap["deployment_name"] = *model.DeploymentName modelMap["description"] = *model.Description modelMap["is_ksys_ha"] = *model.IsKsysHa + modelMap["plan_name"] = *model.PlanName modelMap["primary_ip_address"] = *model.PrimaryIPAddress modelMap["primary_orchestrator_dashboard_url"] = *model.PrimaryOrchestratorDashboardURL modelMap["recovery_location"] = *model.RecoveryLocation diff --git a/ibm/service/drautomationservice/data_source_ibm_pdr_get_dr_summary_response_test.go b/ibm/service/drautomationservice/data_source_ibm_pdr_get_dr_summary_response_test.go index 22573842d3..9633a55c34 100644 --- a/ibm/service/drautomationservice/data_source_ibm_pdr_get_dr_summary_response_test.go +++ b/ibm/service/drautomationservice/data_source_ibm_pdr_get_dr_summary_response_test.go @@ -15,18 +15,19 @@ import ( acc "github.com/IBM-Cloud/terraform-provider-ibm/ibm/acctest" "github.com/IBM-Cloud/terraform-provider-ibm/ibm/service/drautomationservice" + . "github.com/IBM-Cloud/terraform-provider-ibm/ibm/unittest" "github.com/IBM/go-sdk-core/v5/core" "github.com/stretchr/testify/assert" "github.ibm.com/DRAutomation/dra-go-sdk/drautomationservicev1" ) -func TestAccIbmPdrGetDrSummaryResponseDataSourceBasic(t *testing.T) { +func TestAccIBMPdrGetDrSummaryResponseDataSourceBasic(t *testing.T) { resource.Test(t, resource.TestCase{ PreCheck: func() { acc.TestAccPreCheck(t) }, Providers: acc.TestAccProviders, Steps: []resource.TestStep{ resource.TestStep{ - Config: testAccCheckIbmPdrGetDrSummaryResponseDataSourceConfigBasic(), + Config: testAccCheckIBMPdrGetDrSummaryResponseDataSourceConfigBasic(), Check: resource.ComposeTestCheckFunc( resource.TestCheckResourceAttrSet("data.ibm_pdr_get_dr_summary_response.pdr_get_dr_summary_response_instance", "id"), resource.TestCheckResourceAttrSet("data.ibm_pdr_get_dr_summary_response.pdr_get_dr_summary_response_instance", "instance_id"), @@ -39,7 +40,7 @@ func TestAccIbmPdrGetDrSummaryResponseDataSourceBasic(t *testing.T) { }) } -func testAccCheckIbmPdrGetDrSummaryResponseDataSourceConfigBasic() string { +func testAccCheckIBMPdrGetDrSummaryResponseDataSourceConfigBasic() string { return fmt.Sprintf(` data "ibm_pdr_get_dr_summary_response" "pdr_get_dr_summary_response_instance" { instance_id = "crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::" @@ -47,16 +48,20 @@ func testAccCheckIbmPdrGetDrSummaryResponseDataSourceConfigBasic() string { `) } -func TestDataSourceIbmPdrGetDrSummaryResponseOrchestratorDetailsToMap(t *testing.T) { +func TestDataSourceIBMPdrGetDrSummaryResponseOrchestratorDetailsToMap(t *testing.T) { checkResult := func(result map[string]interface{}) { model := make(map[string]interface{}) + model["last_updated_orchestrator_deployment_time"] = "2025-10-16T09:28:13.696Z" + model["last_updated_standby_orchestrator_deployment_time"] = "2025-10-16T09:28:13.696Z" + model["latest_orchestrator_time"] = "2025-10-16T09:28:13.696Z" model["location_id"] = "testString" + model["mfa_enabled"] = "testString" model["orch_ext_connectivity_status"] = "testString" model["orch_standby_node_addition_status"] = "testString" model["orchestrator_cluster_message"] = "testString" - model["orchestrator_cluster_type"] = "testString" model["orchestrator_config_status"] = "testString" model["orchestrator_group_leader"] = "testString" + model["orchestrator_location_type"] = "testString" model["orchestrator_name"] = "testString" model["orchestrator_status"] = "testString" model["orchestrator_workspace_name"] = "testString" @@ -74,13 +79,17 @@ func TestDataSourceIbmPdrGetDrSummaryResponseOrchestratorDetailsToMap(t *testing } model := new(drautomationservicev1.OrchestratorDetails) + model.LastUpdatedOrchestratorDeploymentTime = CreateMockDateTime("2025-10-16T09:28:13.696Z") + model.LastUpdatedStandbyOrchestratorDeploymentTime = CreateMockDateTime("2025-10-16T09:28:13.696Z") + model.LatestOrchestratorTime = CreateMockDateTime("2025-10-16T09:28:13.696Z") model.LocationID = core.StringPtr("testString") + model.MfaEnabled = core.StringPtr("testString") model.OrchExtConnectivityStatus = core.StringPtr("testString") model.OrchStandbyNodeAdditionStatus = core.StringPtr("testString") model.OrchestratorClusterMessage = core.StringPtr("testString") - model.OrchestratorClusterType = core.StringPtr("testString") model.OrchestratorConfigStatus = core.StringPtr("testString") model.OrchestratorGroupLeader = core.StringPtr("testString") + model.OrchestratorLocationType = core.StringPtr("testString") model.OrchestratorName = core.StringPtr("testString") model.OrchestratorStatus = core.StringPtr("testString") model.OrchestratorWorkspaceName = core.StringPtr("testString") @@ -94,18 +103,19 @@ func TestDataSourceIbmPdrGetDrSummaryResponseOrchestratorDetailsToMap(t *testing model.TransitGatewayName = core.StringPtr("testString") model.VPCName = core.StringPtr("testString") - result, err := drautomationservice.DataSourceIbmPdrGetDrSummaryResponseOrchestratorDetailsToMap(model) + result, err := drautomationservice.DataSourceIBMPdrGetDrSummaryResponseOrchestratorDetailsToMap(model) assert.Nil(t, err) checkResult(result) } -func TestDataSourceIbmPdrGetDrSummaryResponseServiceDetailsToMap(t *testing.T) { +func TestDataSourceIBMPdrGetDrSummaryResponseServiceDetailsToMap(t *testing.T) { checkResult := func(result map[string]interface{}) { model := make(map[string]interface{}) model["crn"] = "testString" model["deployment_name"] = "testString" model["description"] = "testString" model["is_ksys_ha"] = true + model["plan_name"] = "testString" model["primary_ip_address"] = "testString" model["primary_orchestrator_dashboard_url"] = "testString" model["recovery_location"] = "testString" @@ -124,6 +134,7 @@ func TestDataSourceIbmPdrGetDrSummaryResponseServiceDetailsToMap(t *testing.T) { model.DeploymentName = core.StringPtr("testString") model.Description = core.StringPtr("testString") model.IsKsysHa = core.BoolPtr(true) + model.PlanName = core.StringPtr("testString") model.PrimaryIPAddress = core.StringPtr("testString") model.PrimaryOrchestratorDashboardURL = core.StringPtr("testString") model.RecoveryLocation = core.StringPtr("testString") @@ -134,7 +145,7 @@ func TestDataSourceIbmPdrGetDrSummaryResponseServiceDetailsToMap(t *testing.T) { model.StandbyStatus = core.StringPtr("testString") model.Status = core.StringPtr("testString") - result, err := drautomationservice.DataSourceIbmPdrGetDrSummaryResponseServiceDetailsToMap(model) + result, err := drautomationservice.DataSourceIBMPdrGetDrSummaryResponseServiceDetailsToMap(model) assert.Nil(t, err) checkResult(result) } diff --git a/ibm/service/drautomationservice/data_source_ibm_pdr_get_event.go b/ibm/service/drautomationservice/data_source_ibm_pdr_get_event.go index 0822e860b4..227aa103e8 100644 --- a/ibm/service/drautomationservice/data_source_ibm_pdr_get_event.go +++ b/ibm/service/drautomationservice/data_source_ibm_pdr_get_event.go @@ -3,7 +3,7 @@ /* * IBM OpenAPI Terraform Generator Version: 3.105.0-3c13b041-20250605-193116 -*/ + */ package drautomationservice @@ -11,7 +11,6 @@ import ( "context" "fmt" "log" - "time" "github.com/hashicorp/terraform-plugin-sdk/v2/diag" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" @@ -22,9 +21,9 @@ import ( "github.ibm.com/DRAutomation/dra-go-sdk/drautomationservicev1" ) -func DataSourceIbmPdrGetEvent() *schema.Resource { +func DataSourceIBMPdrGetEvent() *schema.Resource { return &schema.Resource{ - ReadContext: dataSourceIbmPdrGetEventRead, + ReadContext: dataSourceIBMPdrGetEventRead, Schema: map[string]*schema.Schema{ "provision_id": &schema.Schema{ @@ -42,11 +41,6 @@ func DataSourceIbmPdrGetEvent() *schema.Resource { Optional: true, Description: "The language requested for the return document.", }, - "if_none_match": &schema.Schema{ - Type: schema.TypeString, - Optional: true, - Description: "ETag for conditional requests (optional).", - }, "action": &schema.Schema{ Type: schema.TypeString, Computed: true, @@ -126,7 +120,7 @@ func DataSourceIbmPdrGetEvent() *schema.Resource { } } -func dataSourceIbmPdrGetEventRead(context context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { +func dataSourceIBMPdrGetEventRead(context context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { drAutomationServiceClient, err := meta.(conns.ClientSession).DrAutomationServiceV1() if err != nil { tfErr := flex.DiscriminatedTerraformErrorf(err, err.Error(), "(Data) ibm_pdr_get_event", "read", "initialize-client") @@ -141,18 +135,23 @@ func dataSourceIbmPdrGetEventRead(context context.Context, d *schema.ResourceDat if _, ok := d.GetOk("accept_language"); ok { getEventOptions.SetAcceptLanguage(d.Get("accept_language").(string)) } - if _, ok := d.GetOk("if_none_match"); ok { - getEventOptions.SetIfNoneMatch(d.Get("if_none_match").(string)) - } - event, _, err := drAutomationServiceClient.GetEventWithContext(context, getEventOptions) + event, response, err := drAutomationServiceClient.GetEventWithContext(context, getEventOptions) if err != nil { - tfErr := flex.TerraformErrorf(err, fmt.Sprintf("GetEventWithContext failed: %s", err.Error()), "(Data) ibm_pdr_get_event", "read") - log.Printf("[DEBUG]\n%s", tfErr.GetDebugMessage()) + detailedMsg := fmt.Sprintf("GetEventWithContext failed: %s", err.Error()) + // Include HTTP status & raw body if available + if response != nil { + detailedMsg = fmt.Sprintf( + "GetEventWithContext failed: %s (status: %d, response: %s)", + err.Error(), response.StatusCode, response.Result, + ) + } + tfErr := flex.TerraformErrorf(err, detailedMsg, "(Data) ibm_pdr_get_event", "read") + log.Printf("[ERROR] %s", detailedMsg) return tfErr.GetDiag() } - d.SetId(dataSourceIbmPdrGetEventID(d)) + d.SetId(dataSourceIBMPdrGetEventID(d)) if err = d.Set("action", event.Action); err != nil { return flex.DiscriminatedTerraformErrorf(err, fmt.Sprintf("Error setting action: %s", err), "(Data) ibm_pdr_get_event", "read", "set-action").GetDiag() @@ -206,7 +205,7 @@ func dataSourceIbmPdrGetEventRead(context context.Context, d *schema.ResourceDat if !core.IsNil(event.User) { user := []map[string]interface{}{} - userMap, err := DataSourceIbmPdrGetEventEventUserToMap(event.User) + userMap, err := DataSourceIBMPdrGetEventEventUserToMap(event.User) if err != nil { return flex.DiscriminatedTerraformErrorf(err, err.Error(), "(Data) ibm_pdr_get_event", "read", "user-to-map").GetDiag() } @@ -219,12 +218,12 @@ func dataSourceIbmPdrGetEventRead(context context.Context, d *schema.ResourceDat return nil } -// dataSourceIbmPdrGetEventID returns a reasonable ID for the list. -func dataSourceIbmPdrGetEventID(d *schema.ResourceData) string { - return time.Now().UTC().String() +// dataSourceIBMPdrGetEventID returns a reasonable ID for the list. +func dataSourceIBMPdrGetEventID(d *schema.ResourceData) string { + return d.Get("instance_id").(string) } -func DataSourceIbmPdrGetEventEventUserToMap(model *drautomationservicev1.EventUser) (map[string]interface{}, error) { +func DataSourceIBMPdrGetEventEventUserToMap(model *drautomationservicev1.EventUser) (map[string]interface{}, error) { modelMap := make(map[string]interface{}) if model.Email != nil { modelMap["email"] = *model.Email diff --git a/ibm/service/drautomationservice/data_source_ibm_pdr_get_event_test.go b/ibm/service/drautomationservice/data_source_ibm_pdr_get_event_test.go index a21e6ef1ae..cbb506c3b4 100644 --- a/ibm/service/drautomationservice/data_source_ibm_pdr_get_event_test.go +++ b/ibm/service/drautomationservice/data_source_ibm_pdr_get_event_test.go @@ -20,13 +20,13 @@ import ( "github.ibm.com/DRAutomation/dra-go-sdk/drautomationservicev1" ) -func TestAccIbmPdrGetEventDataSourceBasic(t *testing.T) { +func TestAccIBMPdrGetEventDataSourceBasic(t *testing.T) { resource.Test(t, resource.TestCase{ PreCheck: func() { acc.TestAccPreCheck(t) }, Providers: acc.TestAccProviders, Steps: []resource.TestStep{ resource.TestStep{ - Config: testAccCheckIbmPdrGetEventDataSourceConfigBasic(), + Config: testAccCheckIBMPdrGetEventDataSourceConfigBasic(), Check: resource.ComposeTestCheckFunc( resource.TestCheckResourceAttrSet("data.ibm_pdr_get_event.pdr_get_event_instance", "id"), resource.TestCheckResourceAttrSet("data.ibm_pdr_get_event.pdr_get_event_instance", "provision_id"), @@ -43,7 +43,7 @@ func TestAccIbmPdrGetEventDataSourceBasic(t *testing.T) { }) } -func testAccCheckIbmPdrGetEventDataSourceConfigBasic() string { +func testAccCheckIBMPdrGetEventDataSourceConfigBasic() string { return fmt.Sprintf(` data "ibm_pdr_get_event" "pdr_get_event_instance" { provision_id = "crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::" @@ -52,7 +52,7 @@ func testAccCheckIbmPdrGetEventDataSourceConfigBasic() string { `) } -func TestDataSourceIbmPdrGetEventEventUserToMap(t *testing.T) { +func TestDataSourceIBMPdrGetEventEventUserToMap(t *testing.T) { checkResult := func(result map[string]interface{}) { model := make(map[string]interface{}) model["email"] = "abcuser@ibm.com" @@ -67,7 +67,7 @@ func TestDataSourceIbmPdrGetEventEventUserToMap(t *testing.T) { model.Name = core.StringPtr("abcuser") model.UserID = core.StringPtr("IBMid-695000abc7E") - result, err := drautomationservice.DataSourceIbmPdrGetEventEventUserToMap(model) + result, err := drautomationservice.DataSourceIBMPdrGetEventEventUserToMap(model) assert.Nil(t, err) checkResult(result) } diff --git a/ibm/service/drautomationservice/data_source_ibm_pdr_get_events.go b/ibm/service/drautomationservice/data_source_ibm_pdr_get_events.go index e3d06e1080..a35241a59c 100644 --- a/ibm/service/drautomationservice/data_source_ibm_pdr_get_events.go +++ b/ibm/service/drautomationservice/data_source_ibm_pdr_get_events.go @@ -3,7 +3,7 @@ /* * IBM OpenAPI Terraform Generator Version: 3.105.0-3c13b041-20250605-193116 -*/ + */ package drautomationservice @@ -11,7 +11,6 @@ import ( "context" "fmt" "log" - "time" "github.com/hashicorp/terraform-plugin-sdk/v2/diag" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" @@ -21,9 +20,9 @@ import ( "github.ibm.com/DRAutomation/dra-go-sdk/drautomationservicev1" ) -func DataSourceIbmPdrGetEvents() *schema.Resource { +func DataSourceIBMPdrGetEvents() *schema.Resource { return &schema.Resource{ - ReadContext: dataSourceIbmPdrGetEventsRead, + ReadContext: dataSourceIBMPdrGetEventsRead, Schema: map[string]*schema.Schema{ "provision_id": &schema.Schema{ @@ -51,11 +50,6 @@ func DataSourceIbmPdrGetEvents() *schema.Resource { Optional: true, Description: "The language requested for the return document.", }, - "if_none_match": &schema.Schema{ - Type: schema.TypeString, - Optional: true, - Description: "ETag for conditional requests (optional).", - }, "event": &schema.Schema{ Type: schema.TypeList, Computed: true, @@ -149,7 +143,7 @@ func DataSourceIbmPdrGetEvents() *schema.Resource { } } -func dataSourceIbmPdrGetEventsRead(context context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { +func dataSourceIBMPdrGetEventsRead(context context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { drAutomationServiceClient, err := meta.(conns.ClientSession).DrAutomationServiceV1() if err != nil { tfErr := flex.DiscriminatedTerraformErrorf(err, err.Error(), "(Data) ibm_pdr_get_events", "read", "initialize-client") @@ -172,22 +166,26 @@ func dataSourceIbmPdrGetEventsRead(context context.Context, d *schema.ResourceDa if _, ok := d.GetOk("accept_language"); ok { listEventsOptions.SetAcceptLanguage(d.Get("accept_language").(string)) } - if _, ok := d.GetOk("if_none_match"); ok { - listEventsOptions.SetIfNoneMatch(d.Get("if_none_match").(string)) - } - - eventCollection, _, err := drAutomationServiceClient.ListEventsWithContext(context, listEventsOptions) + eventCollection, response, err := drAutomationServiceClient.ListEventsWithContext(context, listEventsOptions) if err != nil { - tfErr := flex.TerraformErrorf(err, fmt.Sprintf("ListEventsWithContext failed: %s", err.Error()), "(Data) ibm_pdr_get_events", "read") - log.Printf("[DEBUG]\n%s", tfErr.GetDebugMessage()) + detailedMsg := fmt.Sprintf("ListEventsWithContext failed: %s", err.Error()) + // Include HTTP status & raw body if available + if response != nil { + detailedMsg = fmt.Sprintf( + "ListEventsWithContext failed: %s (status: %d, response: %s)", + err.Error(), response.StatusCode, response.Result, + ) + } + tfErr := flex.TerraformErrorf(err, detailedMsg, "(Data) ibm_pdr_get_events", "read") + log.Printf("[ERROR] %s", detailedMsg) return tfErr.GetDiag() } - d.SetId(dataSourceIbmPdrGetEventsID(d)) + d.SetId(dataSourceIBMPdrGetEventsID(d)) event := []map[string]interface{}{} for _, eventItem := range eventCollection.Event { - eventItemMap, err := DataSourceIbmPdrGetEventsEventToMap(&eventItem) // #nosec G601 + eventItemMap, err := DataSourceIBMPdrGetEventsEventToMap(&eventItem) // #nosec G601 if err != nil { return flex.DiscriminatedTerraformErrorf(err, err.Error(), "(Data) ibm_pdr_get_events", "read", "event-to-map").GetDiag() } @@ -200,12 +198,12 @@ func dataSourceIbmPdrGetEventsRead(context context.Context, d *schema.ResourceDa return nil } -// dataSourceIbmPdrGetEventsID returns a reasonable ID for the list. -func dataSourceIbmPdrGetEventsID(d *schema.ResourceData) string { - return time.Now().UTC().String() +// dataSourceIBMPdrGetEventsID returns a reasonable ID for the list. +func dataSourceIBMPdrGetEventsID(d *schema.ResourceData) string { + return d.Get("provision_id").(string) } -func DataSourceIbmPdrGetEventsEventToMap(model *drautomationservicev1.Event) (map[string]interface{}, error) { +func DataSourceIBMPdrGetEventsEventToMap(model *drautomationservicev1.Event) (map[string]interface{}, error) { modelMap := make(map[string]interface{}) modelMap["action"] = *model.Action if model.APISource != nil { @@ -232,7 +230,7 @@ func DataSourceIbmPdrGetEventsEventToMap(model *drautomationservicev1.Event) (ma modelMap["time"] = model.Time.String() modelMap["timestamp"] = *model.Timestamp if model.User != nil { - userMap, err := DataSourceIbmPdrGetEventsEventUserToMap(model.User) + userMap, err := DataSourceIBMPdrGetEventsEventUserToMap(model.User) if err != nil { return modelMap, err } @@ -241,7 +239,7 @@ func DataSourceIbmPdrGetEventsEventToMap(model *drautomationservicev1.Event) (ma return modelMap, nil } -func DataSourceIbmPdrGetEventsEventUserToMap(model *drautomationservicev1.EventUser) (map[string]interface{}, error) { +func DataSourceIBMPdrGetEventsEventUserToMap(model *drautomationservicev1.EventUser) (map[string]interface{}, error) { modelMap := make(map[string]interface{}) if model.Email != nil { modelMap["email"] = *model.Email diff --git a/ibm/service/drautomationservice/data_source_ibm_pdr_get_events_test.go b/ibm/service/drautomationservice/data_source_ibm_pdr_get_events_test.go index 25a73d3c5c..8f7144936e 100644 --- a/ibm/service/drautomationservice/data_source_ibm_pdr_get_events_test.go +++ b/ibm/service/drautomationservice/data_source_ibm_pdr_get_events_test.go @@ -21,13 +21,13 @@ import ( "github.ibm.com/DRAutomation/dra-go-sdk/drautomationservicev1" ) -func TestAccIbmPdrGetEventsDataSourceBasic(t *testing.T) { +func TestAccIBMPdrGetEventsDataSourceBasic(t *testing.T) { resource.Test(t, resource.TestCase{ PreCheck: func() { acc.TestAccPreCheck(t) }, Providers: acc.TestAccProviders, Steps: []resource.TestStep{ resource.TestStep{ - Config: testAccCheckIbmPdrGetEventsDataSourceConfigBasic(), + Config: testAccCheckIBMPdrGetEventsDataSourceConfigBasic(), Check: resource.ComposeTestCheckFunc( resource.TestCheckResourceAttrSet("data.ibm_pdr_get_events.pdr_get_events_instance", "id"), resource.TestCheckResourceAttrSet("data.ibm_pdr_get_events.pdr_get_events_instance", "provision_id"), @@ -38,7 +38,7 @@ func TestAccIbmPdrGetEventsDataSourceBasic(t *testing.T) { }) } -func testAccCheckIbmPdrGetEventsDataSourceConfigBasic() string { +func testAccCheckIBMPdrGetEventsDataSourceConfigBasic() string { return fmt.Sprintf(` data "ibm_pdr_get_events" "pdr_get_events_instance" { provision_id = "crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::" @@ -49,7 +49,7 @@ func testAccCheckIbmPdrGetEventsDataSourceConfigBasic() string { `) } -func TestDataSourceIbmPdrGetEventsEventToMap(t *testing.T) { +func TestDataSourceIBMPdrGetEventsEventToMap(t *testing.T) { checkResult := func(result map[string]interface{}) { eventUserModel := make(map[string]interface{}) eventUserModel["email"] = "abcuser@ibm.com" @@ -90,12 +90,12 @@ func TestDataSourceIbmPdrGetEventsEventToMap(t *testing.T) { model.Timestamp = core.StringPtr("1750662769") model.User = eventUserModel - result, err := drautomationservice.DataSourceIbmPdrGetEventsEventToMap(model) + result, err := drautomationservice.DataSourceIBMPdrGetEventsEventToMap(model) assert.Nil(t, err) checkResult(result) } -func TestDataSourceIbmPdrGetEventsEventUserToMap(t *testing.T) { +func TestDataSourceIBMPdrGetEventsEventUserToMap(t *testing.T) { checkResult := func(result map[string]interface{}) { model := make(map[string]interface{}) model["email"] = "abcuser@ibm.com" @@ -110,7 +110,7 @@ func TestDataSourceIbmPdrGetEventsEventUserToMap(t *testing.T) { model.Name = core.StringPtr("abcuser") model.UserID = core.StringPtr("IBMid-695000abc7E") - result, err := drautomationservice.DataSourceIbmPdrGetEventsEventUserToMap(model) + result, err := drautomationservice.DataSourceIBMPdrGetEventsEventUserToMap(model) assert.Nil(t, err) checkResult(result) } diff --git a/ibm/service/drautomationservice/data_source_ibm_pdr_get_grs_location_pairs.go b/ibm/service/drautomationservice/data_source_ibm_pdr_get_grs_location_pairs.go new file mode 100644 index 0000000000..374086f778 --- /dev/null +++ b/ibm/service/drautomationservice/data_source_ibm_pdr_get_grs_location_pairs.go @@ -0,0 +1,95 @@ +// Copyright IBM Corp. 2025 All Rights Reserved. +// Licensed under the Mozilla Public License v2.0 + +/* + * IBM OpenAPI Terraform Generator Version: 3.105.0-3c13b041-20250605-193116 + */ + +package drautomationservice + +import ( + "context" + "fmt" + "log" + + "github.com/hashicorp/terraform-plugin-sdk/v2/diag" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" + + "github.com/IBM-Cloud/terraform-provider-ibm/ibm/conns" + "github.com/IBM-Cloud/terraform-provider-ibm/ibm/flex" + "github.com/IBM/go-sdk-core/v5/core" + "github.ibm.com/DRAutomation/dra-go-sdk/drautomationservicev1" +) + +func DataSourceIBMPdrGetGrsLocationPairs() *schema.Resource { + return &schema.Resource{ + ReadContext: dataSourceIBMPdrGetGrsLocationPairsRead, + + Schema: map[string]*schema.Schema{ + "instance_id": &schema.Schema{ + Type: schema.TypeString, + Required: true, + Description: "instance id of instance to provision.", + }, + "accept_language": &schema.Schema{ + Type: schema.TypeString, + Optional: true, + Description: "The language requested for the return document.", + }, + "location_pairs": &schema.Schema{ + Type: schema.TypeMap, + Computed: true, + Description: "A map of GRS location pairs where each key is a primary location and the value is its paired location.", + Elem: &schema.Schema{ + Type: schema.TypeString, + }, + }, + }, + } +} + +func dataSourceIBMPdrGetGrsLocationPairsRead(context context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { + drAutomationServiceClient, err := meta.(conns.ClientSession).DrAutomationServiceV1() + if err != nil { + tfErr := flex.DiscriminatedTerraformErrorf(err, err.Error(), "(Data) ibm_pdr_get_grs_location_pairs", "read", "initialize-client") + log.Printf("[DEBUG]\n%s", tfErr.GetDebugMessage()) + return tfErr.GetDiag() + } + + getDrGrsLocationPairOptions := &drautomationservicev1.GetDrGrsLocationPairOptions{} + + getDrGrsLocationPairOptions.SetInstanceID(d.Get("instance_id").(string)) + if _, ok := d.GetOk("accept_language"); ok { + getDrGrsLocationPairOptions.SetAcceptLanguage(d.Get("accept_language").(string)) + } + + getGrsLocationPairResponse, response, err := drAutomationServiceClient.GetDrGrsLocationPairWithContext(context, getDrGrsLocationPairOptions) + if err != nil { + detailedMsg := fmt.Sprintf("GetDrGrsLocationPairWithContext failed: %s", err.Error()) + // Include HTTP status & raw body if available + if response != nil { + detailedMsg = fmt.Sprintf( + "GetDrGrsLocationPairWithContext failed: %s (status: %d, response: %s)", + err.Error(), response.StatusCode, response.Result, + ) + } + tfErr := flex.TerraformErrorf(err, detailedMsg, "(Data) ibm_pdr_get_grs_location_pairs", "read") + log.Printf("[ERROR] %s", detailedMsg) + return tfErr.GetDiag() + } + + d.SetId(dataSourceIBMPdrGetGrsLocationPairsID(d)) + + if !core.IsNil(getGrsLocationPairResponse.LocationPairs) { + if err = d.Set("location_pairs", getGrsLocationPairResponse.LocationPairs); err != nil { + return flex.DiscriminatedTerraformErrorf(err, fmt.Sprintf("Error setting location_pairs: %s", err), "(Data) ibm_pdr_get_grs_location_pairs", "read", "set-location_pairs").GetDiag() + } + } + + return nil +} + +// dataSourceIBMPdrGetGrsLocationPairsID returns a reasonable ID for the list. +func dataSourceIBMPdrGetGrsLocationPairsID(d *schema.ResourceData) string { + return d.Get("instance_id").(string) +} diff --git a/ibm/service/drautomationservice/data_source_ibm_pdr_get_grs_location_pairs_test.go b/ibm/service/drautomationservice/data_source_ibm_pdr_get_grs_location_pairs_test.go new file mode 100644 index 0000000000..31b68d9730 --- /dev/null +++ b/ibm/service/drautomationservice/data_source_ibm_pdr_get_grs_location_pairs_test.go @@ -0,0 +1,41 @@ +// Copyright IBM Corp. 2025 All Rights Reserved. +// Licensed under the Mozilla Public License v2.0 + +/* + * IBM OpenAPI Terraform Generator Version: 3.105.0-3c13b041-20250605-193116 + */ + +package drautomationservice_test + +import ( + "fmt" + "testing" + + "github.com/hashicorp/terraform-plugin-testing/helper/resource" + + acc "github.com/IBM-Cloud/terraform-provider-ibm/ibm/acctest" +) + +func TestAccIBMPdrGetGrsLocationPairsDataSourceBasic(t *testing.T) { + resource.Test(t, resource.TestCase{ + PreCheck: func() { acc.TestAccPreCheck(t) }, + Providers: acc.TestAccProviders, + Steps: []resource.TestStep{ + resource.TestStep{ + Config: testAccCheckIBMPdrGetGrsLocationPairsDataSourceConfigBasic(), + Check: resource.ComposeTestCheckFunc( + resource.TestCheckResourceAttrSet("data.ibm_pdr_get_grs_location_pairs.pdr_get_grs_location_pairs_instance", "id"), + resource.TestCheckResourceAttrSet("data.ibm_pdr_get_grs_location_pairs.pdr_get_grs_location_pairs_instance", "instance_id"), + ), + }, + }, + }) +} + +func testAccCheckIBMPdrGetGrsLocationPairsDataSourceConfigBasic() string { + return fmt.Sprintf(` + data "ibm_pdr_get_grs_location_pairs" "pdr_get_grs_location_pairs_instance" { + instance_id = "crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::" + } + `) +} diff --git a/ibm/service/drautomationservice/data_source_ibm_pdr_get_machine_types.go b/ibm/service/drautomationservice/data_source_ibm_pdr_get_machine_types.go index 9e27a467f4..1ee30e449f 100644 --- a/ibm/service/drautomationservice/data_source_ibm_pdr_get_machine_types.go +++ b/ibm/service/drautomationservice/data_source_ibm_pdr_get_machine_types.go @@ -3,7 +3,7 @@ /* * IBM OpenAPI Terraform Generator Version: 3.105.0-3c13b041-20250605-193116 -*/ + */ package drautomationservice @@ -11,7 +11,6 @@ import ( "context" "fmt" "log" - "time" "github.com/hashicorp/terraform-plugin-sdk/v2/diag" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" @@ -22,9 +21,9 @@ import ( "github.ibm.com/DRAutomation/dra-go-sdk/drautomationservicev1" ) -func DataSourceIbmPdrGetMachineTypes() *schema.Resource { +func DataSourceIBMPdrGetMachineTypes() *schema.Resource { return &schema.Resource{ - ReadContext: dataSourceIbmPdrGetMachineTypesRead, + ReadContext: dataSourceIBMPdrGetMachineTypesRead, Schema: map[string]*schema.Schema{ "instance_id": &schema.Schema{ @@ -42,29 +41,34 @@ func DataSourceIbmPdrGetMachineTypes() *schema.Resource { Optional: true, Description: "The language requested for the return document.", }, - "if_none_match": &schema.Schema{ - Type: schema.TypeString, - Optional: true, - Description: "ETag for conditional requests (optional).", - }, "standby_workspace_name": &schema.Schema{ Type: schema.TypeString, Optional: true, Description: "Standby Workspace Name.", }, - "workspaces": &schema.Schema{ - Type: schema.TypeMap, + "workspaces": { + Type: schema.TypeList, Computed: true, - Description: "Map of workspace IDs to lists of machine types.", - Elem: &schema.Schema{ - Type: schema.TypeString, + Description: "List of workspaces with their machine types.", + Elem: &schema.Resource{ + Schema: map[string]*schema.Schema{ + "name": { + Type: schema.TypeString, + Computed: true, + }, + "machine_types": { + Type: schema.TypeList, + Elem: &schema.Schema{Type: schema.TypeString}, + Computed: true, + }, + }, }, }, }, } } -func dataSourceIbmPdrGetMachineTypesRead(context context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { +func dataSourceIBMPdrGetMachineTypesRead(context context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { drAutomationServiceClient, err := meta.(conns.ClientSession).DrAutomationServiceV1() if err != nil { tfErr := flex.DiscriminatedTerraformErrorf(err, err.Error(), "(Data) ibm_pdr_get_machine_types", "read", "initialize-client") @@ -76,35 +80,69 @@ func dataSourceIbmPdrGetMachineTypesRead(context context.Context, d *schema.Reso getMachineTypeOptions.SetInstanceID(d.Get("instance_id").(string)) getMachineTypeOptions.SetPrimaryWorkspaceName(d.Get("primary_workspace_name").(string)) - if _, ok := d.GetOk("accept_language"); ok { - getMachineTypeOptions.SetAcceptLanguage(d.Get("accept_language").(string)) - } - if _, ok := d.GetOk("if_none_match"); ok { - getMachineTypeOptions.SetIfNoneMatch(d.Get("if_none_match").(string)) - } + if _, ok := d.GetOk("standby_workspace_name"); ok { getMachineTypeOptions.SetStandbyWorkspaceName(d.Get("standby_workspace_name").(string)) } + if _, ok := d.GetOk("accept_language"); ok { + getMachineTypeOptions.SetAcceptLanguage(d.Get("accept_language").(string)) + } - machineTypesByWorkspace, _, err := drAutomationServiceClient.GetMachineTypeWithContext(context, getMachineTypeOptions) + machineTypesByWorkspace, response, err := drAutomationServiceClient.GetMachineTypeWithContext(context, getMachineTypeOptions) + fmt.Println("machineTypesByWorkspace", machineTypesByWorkspace) + fmt.Println("============================================================") + fmt.Println("response:", response) + fmt.Println("============================================================") if err != nil { - tfErr := flex.TerraformErrorf(err, fmt.Sprintf("GetMachineTypeWithContext failed: %s", err.Error()), "(Data) ibm_pdr_get_machine_types", "read") - log.Printf("[DEBUG]\n%s", tfErr.GetDebugMessage()) + detailedMsg := fmt.Sprintf("GetMachineTypeWithContext failed: %s", err.Error()) + // Include HTTP status & raw body if available + if response != nil { + detailedMsg = fmt.Sprintf( + "GetMachineTypeWithContext failed: %s (status: %d, response: %s)", + err.Error(), response.StatusCode, response.Result, + ) + } + tfErr := flex.TerraformErrorf(err, detailedMsg, "(Data) ibm_pdr_get_machine_types", "read") + log.Printf("[ERROR] %s", detailedMsg) return tfErr.GetDiag() } - d.SetId(dataSourceIbmPdrGetMachineTypesID(d)) + d.SetId(dataSourceIBMPdrGetMachineTypesID(d)) if !core.IsNil(machineTypesByWorkspace.Workspaces) { - if err = d.Set("workspaces", machineTypesByWorkspace.Workspaces); err != nil { - return flex.DiscriminatedTerraformErrorf(err, fmt.Sprintf("Error setting workspaces: %s", err), "(Data) ibm_pdr_get_machine_types", "read", "set-workspaces").GetDiag() + var workspacesList []map[string]interface{} + for name, types := range machineTypesByWorkspace.Workspaces { + entry := map[string]interface{}{ + "name": name, + "machine_types": convertToInterfaceList(types), + } + workspacesList = append(workspacesList, entry) + } + + if err := d.Set("workspaces", workspacesList); err != nil { + return flex.DiscriminatedTerraformErrorf( + err, fmt.Sprintf("Error setting workspaces: %s", err), + "(Data) ibm_pdr_get_machine_types", "read", "set-workspaces", + ).GetDiag() } } return nil } -// dataSourceIbmPdrGetMachineTypesID returns a reasonable ID for the list. -func dataSourceIbmPdrGetMachineTypesID(d *schema.ResourceData) string { - return time.Now().UTC().String() +// dataSourceIBMPdrGetMachineTypesID returns a reasonable ID for the list. +func dataSourceIBMPdrGetMachineTypesID(d *schema.ResourceData) string { + return d.Get("instance_id").(string) +} + +func convertToInterfaceList(items []string) []interface{} { + if items == nil { + return nil + } + + interfaceList := make([]interface{}, len(items)) + for i, v := range items { + interfaceList[i] = v + } + return interfaceList } diff --git a/ibm/service/drautomationservice/data_source_ibm_pdr_get_machine_types_test.go b/ibm/service/drautomationservice/data_source_ibm_pdr_get_machine_types_test.go index 7c8e891b72..784fa40066 100644 --- a/ibm/service/drautomationservice/data_source_ibm_pdr_get_machine_types_test.go +++ b/ibm/service/drautomationservice/data_source_ibm_pdr_get_machine_types_test.go @@ -3,7 +3,7 @@ /* * IBM OpenAPI Terraform Generator Version: 3.105.0-3c13b041-20250605-193116 -*/ + */ package drautomationservice_test @@ -16,13 +16,13 @@ import ( acc "github.com/IBM-Cloud/terraform-provider-ibm/ibm/acctest" ) -func TestAccIbmPdrGetMachineTypesDataSourceBasic(t *testing.T) { +func TestAccIBMPdrGetMachineTypesDataSourceBasic(t *testing.T) { resource.Test(t, resource.TestCase{ PreCheck: func() { acc.TestAccPreCheck(t) }, Providers: acc.TestAccProviders, Steps: []resource.TestStep{ resource.TestStep{ - Config: testAccCheckIbmPdrGetMachineTypesDataSourceConfigBasic(), + Config: testAccCheckIBMPdrGetMachineTypesDataSourceConfigBasic(), Check: resource.ComposeTestCheckFunc( resource.TestCheckResourceAttrSet("data.ibm_pdr_get_machine_types.pdr_get_machine_types_instance", "id"), resource.TestCheckResourceAttrSet("data.ibm_pdr_get_machine_types.pdr_get_machine_types_instance", "instance_id"), @@ -33,7 +33,7 @@ func TestAccIbmPdrGetMachineTypesDataSourceBasic(t *testing.T) { }) } -func testAccCheckIbmPdrGetMachineTypesDataSourceConfigBasic() string { +func testAccCheckIBMPdrGetMachineTypesDataSourceConfigBasic() string { return fmt.Sprintf(` data "ibm_pdr_get_machine_types" "pdr_get_machine_types_instance" { instance_id = "crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::" @@ -42,4 +42,3 @@ func testAccCheckIbmPdrGetMachineTypesDataSourceConfigBasic() string { } `) } - diff --git a/ibm/service/drautomationservice/data_source_ibm_pdr_get_managed_vm_list.go b/ibm/service/drautomationservice/data_source_ibm_pdr_get_managed_vm_list.go index 0fdef33073..83fe4bdab5 100644 --- a/ibm/service/drautomationservice/data_source_ibm_pdr_get_managed_vm_list.go +++ b/ibm/service/drautomationservice/data_source_ibm_pdr_get_managed_vm_list.go @@ -11,7 +11,6 @@ import ( "context" "fmt" "log" - "time" "github.com/hashicorp/terraform-plugin-sdk/v2/diag" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" @@ -22,9 +21,9 @@ import ( "github.ibm.com/DRAutomation/dra-go-sdk/drautomationservicev1" ) -func DataSourceIbmPdrGetManagedVmList() *schema.Resource { +func DataSourceIBMPdrGetManagedVMList() *schema.Resource { return &schema.Resource{ - ReadContext: dataSourceIbmPdrGetManagedVmListRead, + ReadContext: dataSourceIBMPdrGetManagedVMListRead, Schema: map[string]*schema.Schema{ "instance_id": &schema.Schema{ @@ -37,14 +36,10 @@ func DataSourceIbmPdrGetManagedVmList() *schema.Resource { Optional: true, Description: "The language requested for the return document.", }, - "if_none_match": &schema.Schema{ - Type: schema.TypeString, - Optional: true, - Description: "ETag for conditional requests (optional).", - }, "managed_vms": &schema.Schema{ - Type: schema.TypeMap, - Computed: true, + Type: schema.TypeMap, + Computed: true, + Description: "A map where the key is the VM ID and the value is the corresponding ManagedVmDetails object.", Elem: &schema.Schema{ Type: schema.TypeString, }, @@ -53,7 +48,7 @@ func DataSourceIbmPdrGetManagedVmList() *schema.Resource { } } -func dataSourceIbmPdrGetManagedVmListRead(context context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { +func dataSourceIBMPdrGetManagedVMListRead(context context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { drAutomationServiceClient, err := meta.(conns.ClientSession).DrAutomationServiceV1() if err != nil { tfErr := flex.DiscriminatedTerraformErrorf(err, err.Error(), "(Data) ibm_pdr_get_managed_vm_list", "read", "initialize-client") @@ -61,28 +56,33 @@ func dataSourceIbmPdrGetManagedVmListRead(context context.Context, d *schema.Res return tfErr.GetDiag() } - getDrManagedVmOptions := &drautomationservicev1.GetDrManagedVMOptions{} + getDrManagedVMOptions := &drautomationservicev1.GetDrManagedVMOptions{} - getDrManagedVmOptions.SetInstanceID(d.Get("instance_id").(string)) + getDrManagedVMOptions.SetInstanceID(d.Get("instance_id").(string)) if _, ok := d.GetOk("accept_language"); ok { - getDrManagedVmOptions.SetAcceptLanguage(d.Get("accept_language").(string)) - } - if _, ok := d.GetOk("if_none_match"); ok { - getDrManagedVmOptions.SetIfNoneMatch(d.Get("if_none_match").(string)) + getDrManagedVMOptions.SetAcceptLanguage(d.Get("accept_language").(string)) } - managedVmMapResponse, _, err := drAutomationServiceClient.GetDrManagedVMWithContext(context, getDrManagedVmOptions) + managedVMMapResponse, response, err := drAutomationServiceClient.GetDrManagedVMWithContext(context, getDrManagedVMOptions) if err != nil { - tfErr := flex.TerraformErrorf(err, fmt.Sprintf("GetDrManagedVmWithContext failed: %s", err.Error()), "(Data) ibm_pdr_get_managed_vm_list", "read") - log.Printf("[DEBUG]\n%s", tfErr.GetDebugMessage()) + detailedMsg := fmt.Sprintf("GetDrManagedVMWithContext failed: %s", err.Error()) + // Include HTTP status & raw body if available + if response != nil { + detailedMsg = fmt.Sprintf( + "GetDrManagedVMWithContext failed: %s (status: %d, response: %s)", + err.Error(), response.StatusCode, response.Result, + ) + } + tfErr := flex.TerraformErrorf(err, detailedMsg, "(Data) ibm_pdr_get_managed_vm_list", "read") + log.Printf("[ERROR] %s", detailedMsg) return tfErr.GetDiag() } - d.SetId(dataSourceIbmPdrGetManagedVmListID(d)) + d.SetId(dataSourceIBMPdrGetManagedVMListID(d)) - if !core.IsNil(managedVmMapResponse.ManagedVms) { - convertedMap := make(map[string]interface{}, len(managedVmMapResponse.ManagedVms)) - for k, v := range managedVmMapResponse.ManagedVms { + if !core.IsNil(managedVMMapResponse.ManagedVms) { + convertedMap := make(map[string]interface{}, len(managedVMMapResponse.ManagedVms)) + for k, v := range managedVMMapResponse.ManagedVms { convertedMap[k] = v } if err = d.Set("managed_vms", flex.Flatten(convertedMap)); err != nil { @@ -93,12 +93,12 @@ func dataSourceIbmPdrGetManagedVmListRead(context context.Context, d *schema.Res return nil } -// dataSourceIbmPdrGetManagedVmListID returns a reasonable ID for the list. -func dataSourceIbmPdrGetManagedVmListID(d *schema.ResourceData) string { - return time.Now().UTC().String() +// dataSourceIBMPdrGetManagedVMListID returns a reasonable ID for the list. +func dataSourceIBMPdrGetManagedVMListID(d *schema.ResourceData) string { + return d.Get("instance_id").(string) } -func DataSourceIbmPdrGetManagedVmListManagedVmDetailsToMap(model *drautomationservicev1.ManagedVMDetails) (map[string]interface{}, error) { +func DataSourceIBMPdrGetManagedVMListManagedVMDetailsToMap(model *drautomationservicev1.ManagedVMDetails) (map[string]interface{}, error) { modelMap := make(map[string]interface{}) if model.Core != nil { modelMap["core"] = *model.Core diff --git a/ibm/service/drautomationservice/data_source_ibm_pdr_get_managed_vm_list_test.go b/ibm/service/drautomationservice/data_source_ibm_pdr_get_managed_vm_list_test.go index be3f0f5874..157c901ccd 100644 --- a/ibm/service/drautomationservice/data_source_ibm_pdr_get_managed_vm_list_test.go +++ b/ibm/service/drautomationservice/data_source_ibm_pdr_get_managed_vm_list_test.go @@ -20,13 +20,13 @@ import ( "github.ibm.com/DRAutomation/dra-go-sdk/drautomationservicev1" ) -func TestAccIbmPdrGetManagedVmListDataSourceBasic(t *testing.T) { +func TestAccIBMPdrGetManagedVMListDataSourceBasic(t *testing.T) { resource.Test(t, resource.TestCase{ PreCheck: func() { acc.TestAccPreCheck(t) }, Providers: acc.TestAccProviders, Steps: []resource.TestStep{ resource.TestStep{ - Config: testAccCheckIbmPdrGetManagedVmListDataSourceConfigBasic(), + Config: testAccCheckIBMPdrGetManagedVMListDataSourceConfigBasic(), Check: resource.ComposeTestCheckFunc( resource.TestCheckResourceAttrSet("data.ibm_pdr_get_managed_vm_list.pdr_get_managed_vm_list_instance", "id"), resource.TestCheckResourceAttrSet("data.ibm_pdr_get_managed_vm_list.pdr_get_managed_vm_list_instance", "instance_id"), @@ -36,7 +36,7 @@ func TestAccIbmPdrGetManagedVmListDataSourceBasic(t *testing.T) { }) } -func testAccCheckIbmPdrGetManagedVmListDataSourceConfigBasic() string { +func testAccCheckIBMPdrGetManagedVMListDataSourceConfigBasic() string { return fmt.Sprintf(` data "ibm_pdr_get_managed_vm_list" "pdr_get_managed_vm_list_instance" { instance_id = "crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::" @@ -44,7 +44,7 @@ func testAccCheckIbmPdrGetManagedVmListDataSourceConfigBasic() string { `) } -func TestDataSourceIbmPdrGetManagedVmListManagedVmDetailsToMap(t *testing.T) { +func TestDataSourceIBMPdrGetManagedVMListManagedVMDetailsToMap(t *testing.T) { checkResult := func(result map[string]interface{}) { model := make(map[string]interface{}) model["core"] = "0.50" @@ -69,7 +69,7 @@ func TestDataSourceIbmPdrGetManagedVmListManagedVmDetailsToMap(t *testing.T) { model.WorkgroupName = core.StringPtr("Example_Workgroup") model.WorkspaceName = core.StringPtr("Example_Workspace") - result, err := drautomationservice.DataSourceIbmPdrGetManagedVmListManagedVmDetailsToMap(model) + result, err := drautomationservice.DataSourceIBMPdrGetManagedVMListManagedVMDetailsToMap(model) assert.Nil(t, err) checkResult(result) } diff --git a/ibm/service/drautomationservice/data_source_ibm_pdr_workspace_schematic.go b/ibm/service/drautomationservice/data_source_ibm_pdr_get_powervs_workspace.go similarity index 65% rename from ibm/service/drautomationservice/data_source_ibm_pdr_workspace_schematic.go rename to ibm/service/drautomationservice/data_source_ibm_pdr_get_powervs_workspace.go index 650ef258c8..a066efe81f 100644 --- a/ibm/service/drautomationservice/data_source_ibm_pdr_workspace_schematic.go +++ b/ibm/service/drautomationservice/data_source_ibm_pdr_get_powervs_workspace.go @@ -3,7 +3,7 @@ /* * IBM OpenAPI Terraform Generator Version: 3.105.0-3c13b041-20250605-193116 -*/ + */ package drautomationservice @@ -11,19 +11,19 @@ import ( "context" "fmt" "log" - "time" "github.com/hashicorp/terraform-plugin-sdk/v2/diag" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" "github.com/IBM-Cloud/terraform-provider-ibm/ibm/conns" "github.com/IBM-Cloud/terraform-provider-ibm/ibm/flex" + "github.com/IBM/go-sdk-core/v5/core" "github.ibm.com/DRAutomation/dra-go-sdk/drautomationservicev1" ) -func DataSourceIbmPdrWorkspaceSchematic() *schema.Resource { +func DataSourceIBMPdrGetPowervsWorkspace() *schema.Resource { return &schema.Resource{ - ReadContext: dataSourceIbmPdrWorkspaceSchematicRead, + ReadContext: dataSourceIBMPdrGetPowervsWorkspaceRead, Schema: map[string]*schema.Schema{ "instance_id": &schema.Schema{ @@ -31,20 +31,20 @@ func DataSourceIbmPdrWorkspaceSchematic() *schema.Resource { Required: true, Description: "instance id of instance to provision.", }, - "schematic_id": &schema.Schema{ + "accept_language": &schema.Schema{ Type: schema.TypeString, - Required: true, - Description: "Schematic ID value.", + Optional: true, + Description: "The language requested for the return document.", }, "location_id": &schema.Schema{ Type: schema.TypeString, Required: true, Description: "Location ID value.", }, - "if_none_match": &schema.Schema{ + "dr_standby_workspace_description": &schema.Schema{ Type: schema.TypeString, - Optional: true, - Description: "ETag for conditional requests (optional).", + Computed: true, + Description: "Description of Standby Workspace.", }, "dr_standby_workspaces": &schema.Schema{ Type: schema.TypeList, @@ -108,6 +108,11 @@ func DataSourceIbmPdrWorkspaceSchematic() *schema.Resource { }, }, }, + "dr_workspace_description": &schema.Schema{ + Type: schema.TypeString, + Computed: true, + Description: "Description of Workspace.", + }, "dr_workspaces": &schema.Schema{ Type: schema.TypeList, Computed: true, @@ -179,68 +184,84 @@ func DataSourceIbmPdrWorkspaceSchematic() *schema.Resource { } } -func dataSourceIbmPdrWorkspaceSchematicRead(context context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { +func dataSourceIBMPdrGetPowervsWorkspaceRead(context context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { drAutomationServiceClient, err := meta.(conns.ClientSession).DrAutomationServiceV1() if err != nil { - tfErr := flex.DiscriminatedTerraformErrorf(err, err.Error(), "(Data) ibm_pdr_workspace_schematic", "read", "initialize-client") + tfErr := flex.DiscriminatedTerraformErrorf(err, err.Error(), "(Data) ibm_pdr_get_powervs_workspace", "read", "initialize-client") log.Printf("[DEBUG]\n%s", tfErr.GetDebugMessage()) return tfErr.GetDiag() } - getPvsworkspaceSchematicOptions := &drautomationservicev1.GetPvsworkspaceSchematicOptions{} + getPowervsWorkspacesOptions := &drautomationservicev1.GetPowervsWorkspacesOptions{} - getPvsworkspaceSchematicOptions.SetInstanceID(d.Get("instance_id").(string)) - getPvsworkspaceSchematicOptions.SetSchematicID(d.Get("schematic_id").(string)) - getPvsworkspaceSchematicOptions.SetLocationID(d.Get("location_id").(string)) - if _, ok := d.GetOk("if_none_match"); ok { - getPvsworkspaceSchematicOptions.SetIfNoneMatch(d.Get("if_none_match").(string)) - } + getPowervsWorkspacesOptions.SetInstanceID(d.Get("instance_id").(string)) + getPowervsWorkspacesOptions.SetLocationID(d.Get("location_id").(string)) - drData, _, err := drAutomationServiceClient.GetPvsworkspaceSchematicWithContext(context, getPvsworkspaceSchematicOptions) + drData, response, err := drAutomationServiceClient.GetPowervsWorkspacesWithContext(context, getPowervsWorkspacesOptions) if err != nil { - tfErr := flex.TerraformErrorf(err, fmt.Sprintf("GetPvsworkspaceSchematicWithContext failed: %s", err.Error()), "(Data) ibm_pdr_workspace_schematic", "read") - log.Printf("[DEBUG]\n%s", tfErr.GetDebugMessage()) + detailedMsg := fmt.Sprintf("GetPowervsWorkspacesWithContext failed: %s", err.Error()) + // Include HTTP status & raw body if available + if response != nil { + detailedMsg = fmt.Sprintf( + "GetPowervsWorkspacesWithContext failed: %s (status: %d, response: %s)", + err.Error(), response.StatusCode, response.Result, + ) + } + tfErr := flex.TerraformErrorf(err, detailedMsg, "(Data) ibm_pdr_get_powervs_workspace", "read") + log.Printf("[ERROR] %s", detailedMsg) return tfErr.GetDiag() } - d.SetId(dataSourceIbmPdrWorkspaceSchematicID(d)) + d.SetId(dataSourceIBMPdrGetPowervsWorkspaceID(d)) + + if !core.IsNil(drData.DrStandbyWorkspaceDescription) { + if err = d.Set("dr_standby_workspace_description", flex.Stringify(drData.DrStandbyWorkspaceDescription)); err != nil { + return flex.DiscriminatedTerraformErrorf(err, fmt.Sprintf("Error setting dr_standby_workspace_description: %s", err), "(Data) ibm_pdr_get_powervs_workspace", "read", "set-dr_standby_workspace_description").GetDiag() + } + } drStandbyWorkspaces := []map[string]interface{}{} for _, drStandbyWorkspacesItem := range drData.DrStandbyWorkspaces { - drStandbyWorkspacesItemMap, err := DataSourceIbmPdrWorkspaceSchematicDRStandbyWorkspaceToMap(&drStandbyWorkspacesItem) // #nosec G601 + drStandbyWorkspacesItemMap, err := DataSourceIBMPdrGetPowervsWorkspaceDrStandbyWorkspaceToMap(&drStandbyWorkspacesItem) // #nosec G601 if err != nil { - return flex.DiscriminatedTerraformErrorf(err, err.Error(), "(Data) ibm_pdr_workspace_schematic", "read", "dr_standby_workspaces-to-map").GetDiag() + return flex.DiscriminatedTerraformErrorf(err, err.Error(), "(Data) ibm_pdr_get_powervs_workspace", "read", "dr_standby_workspaces-to-map").GetDiag() } drStandbyWorkspaces = append(drStandbyWorkspaces, drStandbyWorkspacesItemMap) } if err = d.Set("dr_standby_workspaces", drStandbyWorkspaces); err != nil { - return flex.DiscriminatedTerraformErrorf(err, fmt.Sprintf("Error setting dr_standby_workspaces: %s", err), "(Data) ibm_pdr_workspace_schematic", "read", "set-dr_standby_workspaces").GetDiag() + return flex.DiscriminatedTerraformErrorf(err, fmt.Sprintf("Error setting dr_standby_workspaces: %s", err), "(Data) ibm_pdr_get_powervs_workspace", "read", "set-dr_standby_workspaces").GetDiag() + } + + if !core.IsNil(drData.DrWorkspaceDescription) { + if err = d.Set("dr_workspace_description", flex.Stringify(drData.DrWorkspaceDescription)); err != nil { + return flex.DiscriminatedTerraformErrorf(err, fmt.Sprintf("Error setting dr_workspace_description: %s", err), "(Data) ibm_pdr_get_powervs_workspace", "read", "set-dr_workspace_description").GetDiag() + } } drWorkspaces := []map[string]interface{}{} for _, drWorkspacesItem := range drData.DrWorkspaces { - drWorkspacesItemMap, err := DataSourceIbmPdrWorkspaceSchematicDRWorkspaceToMap(&drWorkspacesItem) // #nosec G601 + drWorkspacesItemMap, err := DataSourceIBMPdrGetPowervsWorkspaceDrWorkspaceToMap(&drWorkspacesItem) // #nosec G601 if err != nil { - return flex.DiscriminatedTerraformErrorf(err, err.Error(), "(Data) ibm_pdr_workspace_schematic", "read", "dr_workspaces-to-map").GetDiag() + return flex.DiscriminatedTerraformErrorf(err, err.Error(), "(Data) ibm_pdr_get_powervs_workspace", "read", "dr_workspaces-to-map").GetDiag() } drWorkspaces = append(drWorkspaces, drWorkspacesItemMap) } if err = d.Set("dr_workspaces", drWorkspaces); err != nil { - return flex.DiscriminatedTerraformErrorf(err, fmt.Sprintf("Error setting dr_workspaces: %s", err), "(Data) ibm_pdr_workspace_schematic", "read", "set-dr_workspaces").GetDiag() + return flex.DiscriminatedTerraformErrorf(err, fmt.Sprintf("Error setting dr_workspaces: %s", err), "(Data) ibm_pdr_get_powervs_workspace", "read", "set-dr_workspaces").GetDiag() } return nil } -// dataSourceIbmPdrWorkspaceSchematicID returns a reasonable ID for the list. -func dataSourceIbmPdrWorkspaceSchematicID(d *schema.ResourceData) string { - return time.Now().UTC().String() +// dataSourceIBMPdrGetPowervsWorkspaceID returns a reasonable ID for the list. +func dataSourceIBMPdrGetPowervsWorkspaceID(d *schema.ResourceData) string { + return d.Get("instance_id").(string) } -func DataSourceIbmPdrWorkspaceSchematicDRStandbyWorkspaceToMap(model *drautomationservicev1.DrStandbyWorkspace) (map[string]interface{}, error) { +func DataSourceIBMPdrGetPowervsWorkspaceDrStandbyWorkspaceToMap(model *drautomationservicev1.DrStandbyWorkspace) (map[string]interface{}, error) { modelMap := make(map[string]interface{}) if model.Details != nil { - detailsMap, err := DataSourceIbmPdrWorkspaceSchematicDetailsDrToMap(model.Details) + detailsMap, err := DataSourceIBMPdrGetPowervsWorkspaceDetailsDrToMap(model.Details) if err != nil { return modelMap, err } @@ -250,7 +271,7 @@ func DataSourceIbmPdrWorkspaceSchematicDRStandbyWorkspaceToMap(model *drautomati modelMap["id"] = *model.ID } if model.Location != nil { - locationMap, err := DataSourceIbmPdrWorkspaceSchematicLocationDrToMap(model.Location) + locationMap, err := DataSourceIBMPdrGetPowervsWorkspaceLocationDrToMap(model.Location) if err != nil { return modelMap, err } @@ -265,7 +286,7 @@ func DataSourceIbmPdrWorkspaceSchematicDRStandbyWorkspaceToMap(model *drautomati return modelMap, nil } -func DataSourceIbmPdrWorkspaceSchematicDetailsDrToMap(model *drautomationservicev1.DetailsDr) (map[string]interface{}, error) { +func DataSourceIBMPdrGetPowervsWorkspaceDetailsDrToMap(model *drautomationservicev1.DetailsDr) (map[string]interface{}, error) { modelMap := make(map[string]interface{}) if model.CRN != nil { modelMap["crn"] = *model.CRN @@ -273,7 +294,7 @@ func DataSourceIbmPdrWorkspaceSchematicDetailsDrToMap(model *drautomationservice return modelMap, nil } -func DataSourceIbmPdrWorkspaceSchematicLocationDrToMap(model *drautomationservicev1.LocationDr) (map[string]interface{}, error) { +func DataSourceIBMPdrGetPowervsWorkspaceLocationDrToMap(model *drautomationservicev1.LocationDr) (map[string]interface{}, error) { modelMap := make(map[string]interface{}) if model.Region != nil { modelMap["region"] = *model.Region @@ -287,13 +308,13 @@ func DataSourceIbmPdrWorkspaceSchematicLocationDrToMap(model *drautomationservic return modelMap, nil } -func DataSourceIbmPdrWorkspaceSchematicDRWorkspaceToMap(model *drautomationservicev1.DrWorkspace) (map[string]interface{}, error) { +func DataSourceIBMPdrGetPowervsWorkspaceDrWorkspaceToMap(model *drautomationservicev1.DrWorkspace) (map[string]interface{}, error) { modelMap := make(map[string]interface{}) if model.Default != nil { modelMap["default"] = *model.Default } if model.Details != nil { - detailsMap, err := DataSourceIbmPdrWorkspaceSchematicDetailsDrToMap(model.Details) + detailsMap, err := DataSourceIBMPdrGetPowervsWorkspaceDetailsDrToMap(model.Details) if err != nil { return modelMap, err } @@ -303,7 +324,7 @@ func DataSourceIbmPdrWorkspaceSchematicDRWorkspaceToMap(model *drautomationservi modelMap["id"] = *model.ID } if model.Location != nil { - locationMap, err := DataSourceIbmPdrWorkspaceSchematicLocationDrToMap(model.Location) + locationMap, err := DataSourceIBMPdrGetPowervsWorkspaceLocationDrToMap(model.Location) if err != nil { return modelMap, err } diff --git a/ibm/service/drautomationservice/data_source_ibm_pdr_workspace_schematic_test.go b/ibm/service/drautomationservice/data_source_ibm_pdr_get_powervs_workspace_test.go similarity index 74% rename from ibm/service/drautomationservice/data_source_ibm_pdr_workspace_schematic_test.go rename to ibm/service/drautomationservice/data_source_ibm_pdr_get_powervs_workspace_test.go index ee7a4a3c5f..958a4cf34e 100644 --- a/ibm/service/drautomationservice/data_source_ibm_pdr_workspace_schematic_test.go +++ b/ibm/service/drautomationservice/data_source_ibm_pdr_get_powervs_workspace_test.go @@ -3,7 +3,7 @@ /* * IBM OpenAPI Terraform Generator Version: 3.105.0-3c13b041-20250605-193116 - */ +*/ package drautomationservice_test @@ -13,45 +13,44 @@ import ( "github.com/hashicorp/terraform-plugin-testing/helper/resource" - acc "github.com/IBM-Cloud/terraform-provider-ibm/ibm/acctest" "github.com/IBM-Cloud/terraform-provider-ibm/ibm/service/drautomationservice" "github.com/IBM/go-sdk-core/v5/core" "github.com/stretchr/testify/assert" "github.ibm.com/DRAutomation/dra-go-sdk/drautomationservicev1" + acc "github.com/IBM-Cloud/terraform-provider-ibm/ibm/acctest" ) -func TestAccIbmPdrWorkspaceSchematicDataSourceBasic(t *testing.T) { +func TestAccIBMPdrGetPowervsWorkspaceDataSourceBasic(t *testing.T) { resource.Test(t, resource.TestCase{ PreCheck: func() { acc.TestAccPreCheck(t) }, Providers: acc.TestAccProviders, Steps: []resource.TestStep{ resource.TestStep{ - Config: testAccCheckIbmPdrWorkspaceSchematicDataSourceConfigBasic(), + Config: testAccCheckIBMPdrGetPowervsWorkspaceDataSourceConfigBasic(), Check: resource.ComposeTestCheckFunc( - resource.TestCheckResourceAttrSet("data.ibm_pdr_workspace_schematic.pdr_workspace_schematic_instance", "id"), - resource.TestCheckResourceAttrSet("data.ibm_pdr_workspace_schematic.pdr_workspace_schematic_instance", "instance_id"), - resource.TestCheckResourceAttrSet("data.ibm_pdr_workspace_schematic.pdr_workspace_schematic_instance", "schematic_id"), - resource.TestCheckResourceAttrSet("data.ibm_pdr_workspace_schematic.pdr_workspace_schematic_instance", "location_id"), - resource.TestCheckResourceAttrSet("data.ibm_pdr_workspace_schematic.pdr_workspace_schematic_instance", "dr_standby_workspaces.#"), - resource.TestCheckResourceAttrSet("data.ibm_pdr_workspace_schematic.pdr_workspace_schematic_instance", "dr_workspaces.#"), + resource.TestCheckResourceAttrSet("data.ibm_pdr_get_powervs_workspace.pdr_get_powervs_workspace_instance", "id"), + resource.TestCheckResourceAttrSet("data.ibm_pdr_get_powervs_workspace.pdr_get_powervs_workspace_instance", "instance_id"), + resource.TestCheckResourceAttrSet("data.ibm_pdr_get_powervs_workspace.pdr_get_powervs_workspace_instance", "location_id"), + resource.TestCheckResourceAttrSet("data.ibm_pdr_get_powervs_workspace.pdr_get_powervs_workspace_instance", "dr_standby_workspaces.#"), + resource.TestCheckResourceAttrSet("data.ibm_pdr_get_powervs_workspace.pdr_get_powervs_workspace_instance", "dr_workspaces.#"), ), }, }, }) } -func testAccCheckIbmPdrWorkspaceSchematicDataSourceConfigBasic() string { +func testAccCheckIBMPdrGetPowervsWorkspaceDataSourceConfigBasic() string { return fmt.Sprintf(` - data "ibm_pdr_workspace_schematic" "pdr_workspace_schematic_instance" { + data "ibm_pdr_get_powervs_workspace" "pdr_get_powervs_workspace_instance" { instance_id = "crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::" - schematic_id = "us-south.workspace.projects-service.3ae96a02" location_id = "location_id" If-None-Match = "If-None-Match" } `) } -func TestDataSourceIbmPdrWorkspaceSchematicDRStandbyWorkspaceToMap(t *testing.T) { + +func TestDataSourceIBMPdrGetPowervsWorkspaceDrStandbyWorkspaceToMap(t *testing.T) { checkResult := func(result map[string]interface{}) { detailsDrModel := make(map[string]interface{}) detailsDrModel["crn"] = "crn:v1:bluemix:public:power-iaas:lon06:a/094f4214c75941f991da601b001df1fe:b6297e60-d0fe-4e24-8b15-276cf0645737::" @@ -86,12 +85,12 @@ func TestDataSourceIbmPdrWorkspaceSchematicDRStandbyWorkspaceToMap(t *testing.T) model.Name = core.StringPtr("testString") model.Status = core.StringPtr("testString") - result, err := drautomationservice.DataSourceIbmPdrWorkspaceSchematicDRStandbyWorkspaceToMap(model) + result, err := drautomationservice.DataSourceIBMPdrGetPowervsWorkspaceDrStandbyWorkspaceToMap(model) assert.Nil(t, err) checkResult(result) } -func TestDataSourceIbmPdrWorkspaceSchematicDetailsDrToMap(t *testing.T) { +func TestDataSourceIBMPdrGetPowervsWorkspaceDetailsDrToMap(t *testing.T) { checkResult := func(result map[string]interface{}) { model := make(map[string]interface{}) model["crn"] = "crn:v1:bluemix:public:power-iaas:lon06:a/094f4214c75941f991da601b001df1fe:b6297e60-d0fe-4e24-8b15-276cf0645737::" @@ -102,12 +101,12 @@ func TestDataSourceIbmPdrWorkspaceSchematicDetailsDrToMap(t *testing.T) { model := new(drautomationservicev1.DetailsDr) model.CRN = core.StringPtr("crn:v1:bluemix:public:power-iaas:lon06:a/094f4214c75941f991da601b001df1fe:b6297e60-d0fe-4e24-8b15-276cf0645737::") - result, err := drautomationservice.DataSourceIbmPdrWorkspaceSchematicDetailsDrToMap(model) + result, err := drautomationservice.DataSourceIBMPdrGetPowervsWorkspaceDetailsDrToMap(model) assert.Nil(t, err) checkResult(result) } -func TestDataSourceIbmPdrWorkspaceSchematicLocationDrToMap(t *testing.T) { +func TestDataSourceIBMPdrGetPowervsWorkspaceLocationDrToMap(t *testing.T) { checkResult := func(result map[string]interface{}) { model := make(map[string]interface{}) model["region"] = "lon06" @@ -122,12 +121,12 @@ func TestDataSourceIbmPdrWorkspaceSchematicLocationDrToMap(t *testing.T) { model.Type = core.StringPtr("data-center") model.URL = core.StringPtr("https://lon.power-iaas.cloud.ibm.com") - result, err := drautomationservice.DataSourceIbmPdrWorkspaceSchematicLocationDrToMap(model) + result, err := drautomationservice.DataSourceIBMPdrGetPowervsWorkspaceLocationDrToMap(model) assert.Nil(t, err) checkResult(result) } -func TestDataSourceIbmPdrWorkspaceSchematicDRWorkspaceToMap(t *testing.T) { +func TestDataSourceIBMPdrGetPowervsWorkspaceDrWorkspaceToMap(t *testing.T) { checkResult := func(result map[string]interface{}) { detailsDrModel := make(map[string]interface{}) detailsDrModel["crn"] = "crn:v1:bluemix:public:power-iaas:lon06:a/094f4214c75941f991da601b001df1fe:b6297e60-d0fe-4e24-8b15-276cf0645737::" @@ -164,7 +163,7 @@ func TestDataSourceIbmPdrWorkspaceSchematicDRWorkspaceToMap(t *testing.T) { model.Name = core.StringPtr("testString") model.Status = core.StringPtr("active") - result, err := drautomationservice.DataSourceIbmPdrWorkspaceSchematicDRWorkspaceToMap(model) + result, err := drautomationservice.DataSourceIBMPdrGetPowervsWorkspaceDrWorkspaceToMap(model) assert.Nil(t, err) checkResult(result) } diff --git a/ibm/service/drautomationservice/data_source_ibm_pdr_last_operation.go b/ibm/service/drautomationservice/data_source_ibm_pdr_last_operation.go index 4f25b8158f..ad04fa16d4 100644 --- a/ibm/service/drautomationservice/data_source_ibm_pdr_last_operation.go +++ b/ibm/service/drautomationservice/data_source_ibm_pdr_last_operation.go @@ -3,7 +3,7 @@ /* * IBM OpenAPI Terraform Generator Version: 3.105.0-3c13b041-20250605-193116 -*/ + */ package drautomationservice @@ -11,7 +11,6 @@ import ( "context" "fmt" "log" - "time" "github.com/hashicorp/terraform-plugin-sdk/v2/diag" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" @@ -22,9 +21,9 @@ import ( "github.ibm.com/DRAutomation/dra-go-sdk/drautomationservicev1" ) -func DataSourceIbmPdrLastOperation() *schema.Resource { +func DataSourceIBMPdrLastOperation() *schema.Resource { return &schema.Resource{ - ReadContext: dataSourceIbmPdrLastOperationRead, + ReadContext: dataSourceIBMPdrLastOperationRead, Schema: map[string]*schema.Schema{ "instance_id": &schema.Schema{ @@ -37,11 +36,6 @@ func DataSourceIbmPdrLastOperation() *schema.Resource { Optional: true, Description: "The language requested for the return document.", }, - "if_none_match": &schema.Schema{ - Type: schema.TypeString, - Optional: true, - Description: "ETag for conditional requests (optional).", - }, "crn": &schema.Schema{ Type: schema.TypeString, Computed: true, @@ -57,6 +51,21 @@ func DataSourceIbmPdrLastOperation() *schema.Resource { Computed: true, Description: "Indicates whether high availability (HA) is enabled for the orchestrator.", }, + "last_updated_orchestrator_deployment_time": &schema.Schema{ + Type: schema.TypeString, + Computed: true, + Description: "Deployment time of primary orchestrator VM.", + }, + "last_updated_standby_orchestrator_deployment_time": &schema.Schema{ + Type: schema.TypeString, + Computed: true, + Description: "Deployment time of StandBy orchestrator VM.", + }, + "mfa_enabled": &schema.Schema{ + Type: schema.TypeString, + Computed: true, + Description: "Multiple Factor Authentication Enabled or not.", + }, "orch_ext_connectivity_status": &schema.Schema{ Type: schema.TypeString, Computed: true, @@ -77,6 +86,11 @@ func DataSourceIbmPdrLastOperation() *schema.Resource { Computed: true, Description: "Configuration status of the orchestrator cluster.", }, + "plan_name": &schema.Schema{ + Type: schema.TypeString, + Computed: true, + Description: "Name of the Plan.", + }, "primary_description": &schema.Schema{ Type: schema.TypeString, Computed: true, @@ -126,7 +140,7 @@ func DataSourceIbmPdrLastOperation() *schema.Resource { } } -func dataSourceIbmPdrLastOperationRead(context context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { +func dataSourceIBMPdrLastOperationRead(context context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { drAutomationServiceClient, err := meta.(conns.ClientSession).DrAutomationServiceV1() if err != nil { tfErr := flex.DiscriminatedTerraformErrorf(err, err.Error(), "(Data) ibm_pdr_last_operation", "read", "initialize-client") @@ -140,18 +154,26 @@ func dataSourceIbmPdrLastOperationRead(context context.Context, d *schema.Resour if _, ok := d.GetOk("accept_language"); ok { getLastOperationOptions.SetAcceptLanguage(d.Get("accept_language").(string)) } - if _, ok := d.GetOk("if_none_match"); ok { - getLastOperationOptions.SetIfNoneMatch(d.Get("if_none_match").(string)) - } + // if _, ok := d.GetOk("if_none_match"); ok { + // getLastOperationOptions.SetIfNoneMatch(d.Get("if_none_match").(string)) + // } - serviceInstanceStatus, _, err := drAutomationServiceClient.GetLastOperationWithContext(context, getLastOperationOptions) + serviceInstanceStatus, response, err := drAutomationServiceClient.GetLastOperationWithContext(context, getLastOperationOptions) if err != nil { - tfErr := flex.TerraformErrorf(err, fmt.Sprintf("GetLastOperationWithContext failed: %s", err.Error()), "(Data) ibm_pdr_last_operation", "read") - log.Printf("[DEBUG]\n%s", tfErr.GetDebugMessage()) + detailedMsg := fmt.Sprintf("GetLastOperationWithContext failed: %s", err.Error()) + // Include HTTP status & raw body if available + if response != nil { + detailedMsg = fmt.Sprintf( + "GetLastOperationWithContext failed: %s (status: %d, response: %s)", + err.Error(), response.StatusCode, response.Result, + ) + } + tfErr := flex.TerraformErrorf(err, detailedMsg, "(Data) ibm_pdr_last_operation", "read") + log.Printf("[ERROR] %s", detailedMsg) return tfErr.GetDiag() } - d.SetId(dataSourceIbmPdrLastOperationID(d)) + d.SetId(dataSourceIBMPdrLastOperationID(d)) if err = d.Set("crn", serviceInstanceStatus.CRN); err != nil { return flex.DiscriminatedTerraformErrorf(err, fmt.Sprintf("Error setting crn: %s", err), "(Data) ibm_pdr_last_operation", "read", "set-crn").GetDiag() @@ -165,6 +187,18 @@ func dataSourceIbmPdrLastOperationRead(context context.Context, d *schema.Resour return flex.DiscriminatedTerraformErrorf(err, fmt.Sprintf("Error setting is_ksys_ha: %s", err), "(Data) ibm_pdr_last_operation", "read", "set-is_ksys_ha").GetDiag() } + if err = d.Set("last_updated_orchestrator_deployment_time", flex.DateTimeToString(serviceInstanceStatus.LastUpdatedOrchestratorDeploymentTime)); err != nil { + return flex.DiscriminatedTerraformErrorf(err, fmt.Sprintf("Error setting last_updated_orchestrator_deployment_time: %s", err), "(Data) ibm_pdr_last_operation", "read", "set-last_updated_orchestrator_deployment_time").GetDiag() + } + + if err = d.Set("last_updated_standby_orchestrator_deployment_time", flex.DateTimeToString(serviceInstanceStatus.LastUpdatedStandbyOrchestratorDeploymentTime)); err != nil { + return flex.DiscriminatedTerraformErrorf(err, fmt.Sprintf("Error setting last_updated_standby_orchestrator_deployment_time: %s", err), "(Data) ibm_pdr_last_operation", "read", "set-last_updated_standby_orchestrator_deployment_time").GetDiag() + } + + if err = d.Set("mfa_enabled", serviceInstanceStatus.MfaEnabled); err != nil { + return flex.DiscriminatedTerraformErrorf(err, fmt.Sprintf("Error setting mfa_enabled: %s", err), "(Data) ibm_pdr_last_operation", "read", "set-mfa_enabled").GetDiag() + } + if !core.IsNil(serviceInstanceStatus.OrchExtConnectivityStatus) { if err = d.Set("orch_ext_connectivity_status", serviceInstanceStatus.OrchExtConnectivityStatus); err != nil { return flex.DiscriminatedTerraformErrorf(err, fmt.Sprintf("Error setting orch_ext_connectivity_status: %s", err), "(Data) ibm_pdr_last_operation", "read", "set-orch_ext_connectivity_status").GetDiag() @@ -183,6 +217,10 @@ func dataSourceIbmPdrLastOperationRead(context context.Context, d *schema.Resour return flex.DiscriminatedTerraformErrorf(err, fmt.Sprintf("Error setting orchestrator_config_status: %s", err), "(Data) ibm_pdr_last_operation", "read", "set-orchestrator_config_status").GetDiag() } + if err = d.Set("plan_name", serviceInstanceStatus.PlanName); err != nil { + return flex.DiscriminatedTerraformErrorf(err, fmt.Sprintf("Error setting plan_name: %s", err), "(Data) ibm_pdr_last_operation", "read", "set-plan_name").GetDiag() + } + if err = d.Set("primary_description", serviceInstanceStatus.PrimaryDescription); err != nil { return flex.DiscriminatedTerraformErrorf(err, fmt.Sprintf("Error setting primary_description: %s", err), "(Data) ibm_pdr_last_operation", "read", "set-primary_description").GetDiag() } @@ -222,7 +260,7 @@ func dataSourceIbmPdrLastOperationRead(context context.Context, d *schema.Resour return nil } -// dataSourceIbmPdrLastOperationID returns a reasonable ID for the list. -func dataSourceIbmPdrLastOperationID(d *schema.ResourceData) string { - return time.Now().UTC().String() +// dataSourceIBMPdrLastOperationID returns a reasonable ID for the list. +func dataSourceIBMPdrLastOperationID(d *schema.ResourceData) string { + return d.Get("instance_id").(string) } diff --git a/ibm/service/drautomationservice/data_source_ibm_pdr_last_operation_test.go b/ibm/service/drautomationservice/data_source_ibm_pdr_last_operation_test.go index 2836ebe6fc..c6eaeab333 100644 --- a/ibm/service/drautomationservice/data_source_ibm_pdr_last_operation_test.go +++ b/ibm/service/drautomationservice/data_source_ibm_pdr_last_operation_test.go @@ -3,7 +3,7 @@ /* * IBM OpenAPI Terraform Generator Version: 3.105.0-3c13b041-20250605-193116 - */ +*/ package drautomationservice_test @@ -16,22 +16,26 @@ import ( acc "github.com/IBM-Cloud/terraform-provider-ibm/ibm/acctest" ) -func TestAccIbmPdrLastOperationDataSourceBasic(t *testing.T) { +func TestAccIBMPdrLastOperationDataSourceBasic(t *testing.T) { resource.Test(t, resource.TestCase{ PreCheck: func() { acc.TestAccPreCheck(t) }, Providers: acc.TestAccProviders, Steps: []resource.TestStep{ resource.TestStep{ - Config: testAccCheckIbmPdrLastOperationDataSourceConfigBasic(), + Config: testAccCheckIBMPdrLastOperationDataSourceConfigBasic(), Check: resource.ComposeTestCheckFunc( resource.TestCheckResourceAttrSet("data.ibm_pdr_last_operation.pdr_last_operation_instance", "id"), resource.TestCheckResourceAttrSet("data.ibm_pdr_last_operation.pdr_last_operation_instance", "instance_id"), resource.TestCheckResourceAttrSet("data.ibm_pdr_last_operation.pdr_last_operation_instance", "crn"), resource.TestCheckResourceAttrSet("data.ibm_pdr_last_operation.pdr_last_operation_instance", "deployment_name"), resource.TestCheckResourceAttrSet("data.ibm_pdr_last_operation.pdr_last_operation_instance", "is_ksys_ha"), + resource.TestCheckResourceAttrSet("data.ibm_pdr_last_operation.pdr_last_operation_instance", "last_updated_orchestrator_deployment_time"), + resource.TestCheckResourceAttrSet("data.ibm_pdr_last_operation.pdr_last_operation_instance", "last_updated_standby_orchestrator_deployment_time"), + resource.TestCheckResourceAttrSet("data.ibm_pdr_last_operation.pdr_last_operation_instance", "mfa_enabled"), resource.TestCheckResourceAttrSet("data.ibm_pdr_last_operation.pdr_last_operation_instance", "orch_standby_node_addtion_status"), resource.TestCheckResourceAttrSet("data.ibm_pdr_last_operation.pdr_last_operation_instance", "orchestrator_cluster_message"), resource.TestCheckResourceAttrSet("data.ibm_pdr_last_operation.pdr_last_operation_instance", "orchestrator_config_status"), + resource.TestCheckResourceAttrSet("data.ibm_pdr_last_operation.pdr_last_operation_instance", "plan_name"), resource.TestCheckResourceAttrSet("data.ibm_pdr_last_operation.pdr_last_operation_instance", "primary_description"), resource.TestCheckResourceAttrSet("data.ibm_pdr_last_operation.pdr_last_operation_instance", "primary_ip_address"), resource.TestCheckResourceAttrSet("data.ibm_pdr_last_operation.pdr_last_operation_instance", "primary_orchestrator_status"), @@ -47,10 +51,11 @@ func TestAccIbmPdrLastOperationDataSourceBasic(t *testing.T) { }) } -func testAccCheckIbmPdrLastOperationDataSourceConfigBasic() string { +func testAccCheckIBMPdrLastOperationDataSourceConfigBasic() string { return fmt.Sprintf(` data "ibm_pdr_last_operation" "pdr_last_operation_instance" { instance_id = "crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::" } `) } + diff --git a/ibm/service/drautomationservice/data_source_ibm_pdr_schematic_workspaces.go b/ibm/service/drautomationservice/data_source_ibm_pdr_schematic_workspaces.go deleted file mode 100644 index 6f7cde0d65..0000000000 --- a/ibm/service/drautomationservice/data_source_ibm_pdr_schematic_workspaces.go +++ /dev/null @@ -1,192 +0,0 @@ -// Copyright IBM Corp. 2025 All Rights Reserved. -// Licensed under the Mozilla Public License v2.0 - -/* - * IBM OpenAPI Terraform Generator Version: 3.105.0-3c13b041-20250605-193116 -*/ - -package drautomationservice - -import ( - "context" - "fmt" - "log" - "time" - - "github.com/hashicorp/terraform-plugin-sdk/v2/diag" - "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" - - "github.com/IBM-Cloud/terraform-provider-ibm/ibm/conns" - "github.com/IBM-Cloud/terraform-provider-ibm/ibm/flex" - "github.ibm.com/DRAutomation/dra-go-sdk/drautomationservicev1" -) - -func DataSourceIbmPdrSchematicWorkspaces() *schema.Resource { - return &schema.Resource{ - ReadContext: dataSourceIbmPdrSchematicWorkspacesRead, - - Schema: map[string]*schema.Schema{ - "instance_id": &schema.Schema{ - Type: schema.TypeString, - Required: true, - Description: "instance id of instance to provision.", - }, - "if_none_match": &schema.Schema{ - Type: schema.TypeString, - Optional: true, - Description: "ETag for conditional requests (optional).", - }, - "workspaces": &schema.Schema{ - Type: schema.TypeList, - Computed: true, - Description: "List of Schematics workspaces associated with the DR automation service instance.", - Elem: &schema.Resource{ - Schema: map[string]*schema.Schema{ - "catalog_ref": &schema.Schema{ - Type: schema.TypeList, - Computed: true, - Description: "Reference to a catalog item associated with the DR automation workspace.", - Elem: &schema.Resource{ - Schema: map[string]*schema.Schema{ - "item_name": &schema.Schema{ - Type: schema.TypeString, - Computed: true, - Description: "Name of the catalog item that defines the resource or configuration.", - }, - }, - }, - }, - "created_at": &schema.Schema{ - Type: schema.TypeString, - Computed: true, - Description: "Timestamp when the Schematics workspace was created, in ISO 8601 format (UTC).", - }, - "created_by": &schema.Schema{ - Type: schema.TypeString, - Computed: true, - Description: "CRN of the user or service that created the Schematics workspace.", - }, - "crn": &schema.Schema{ - Type: schema.TypeString, - Computed: true, - Description: "Cloud Resource Name (CRN) of the Schematics workspace.", - }, - "description": &schema.Schema{ - Type: schema.TypeString, - Computed: true, - Description: "Detailed description of the Schematics workspace.", - }, - "id": &schema.Schema{ - Type: schema.TypeString, - Computed: true, - Description: "Unique identifier of the Schematics workspace.", - }, - "location": &schema.Schema{ - Type: schema.TypeString, - Computed: true, - Description: "Region where the Schematics workspace is hosted.", - }, - "name": &schema.Schema{ - Type: schema.TypeString, - Computed: true, - Description: "Human-readable name of the Schematics workspace.", - }, - "status": &schema.Schema{ - Type: schema.TypeString, - Computed: true, - Description: "Current lifecycle status of the Schematics workspace.", - }, - }, - }, - }, - }, - } -} - -func dataSourceIbmPdrSchematicWorkspacesRead(context context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { - drAutomationServiceClient, err := meta.(conns.ClientSession).DrAutomationServiceV1() - if err != nil { - tfErr := flex.DiscriminatedTerraformErrorf(err, err.Error(), "(Data) ibm_pdr_schematic_workspaces", "read", "initialize-client") - log.Printf("[DEBUG]\n%s", tfErr.GetDebugMessage()) - return tfErr.GetDiag() - } - - getSchematicWorkspaceOptions := &drautomationservicev1.GetSchematicWorkspaceOptions{} - - getSchematicWorkspaceOptions.SetInstanceID(d.Get("instance_id").(string)) - if _, ok := d.GetOk("if_none_match"); ok { - getSchematicWorkspaceOptions.SetIfNoneMatch(d.Get("if_none_match").(string)) - } - - schematicWorkspacesResponse, _, err := drAutomationServiceClient.GetSchematicWorkspaceWithContext(context, getSchematicWorkspaceOptions) - if err != nil { - tfErr := flex.TerraformErrorf(err, fmt.Sprintf("GetSchematicWorkspaceWithContext failed: %s", err.Error()), "(Data) ibm_pdr_schematic_workspaces", "read") - log.Printf("[DEBUG]\n%s", tfErr.GetDebugMessage()) - return tfErr.GetDiag() - } - - d.SetId(dataSourceIbmPdrSchematicWorkspacesID(d)) - - workspaces := []map[string]interface{}{} - for _, workspacesItem := range schematicWorkspacesResponse.Workspaces { - workspacesItemMap, err := DataSourceIbmPdrSchematicWorkspacesDrAutomationSchematicsWorkspaceToMap(&workspacesItem) // #nosec G601 - if err != nil { - return flex.DiscriminatedTerraformErrorf(err, err.Error(), "(Data) ibm_pdr_schematic_workspaces", "read", "workspaces-to-map").GetDiag() - } - workspaces = append(workspaces, workspacesItemMap) - } - if err = d.Set("workspaces", workspaces); err != nil { - return flex.DiscriminatedTerraformErrorf(err, fmt.Sprintf("Error setting workspaces: %s", err), "(Data) ibm_pdr_schematic_workspaces", "read", "set-workspaces").GetDiag() - } - - return nil -} - -// dataSourceIbmPdrSchematicWorkspacesID returns a reasonable ID for the list. -func dataSourceIbmPdrSchematicWorkspacesID(d *schema.ResourceData) string { - return time.Now().UTC().String() -} - -func DataSourceIbmPdrSchematicWorkspacesDrAutomationSchematicsWorkspaceToMap(model *drautomationservicev1.DrAutomationSchematicsWorkspace) (map[string]interface{}, error) { - modelMap := make(map[string]interface{}) - if model.CatalogRef != nil { - catalogRefMap, err := DataSourceIbmPdrSchematicWorkspacesDrAutomationCatalogRefToMap(model.CatalogRef) - if err != nil { - return modelMap, err - } - modelMap["catalog_ref"] = []map[string]interface{}{catalogRefMap} - } - if model.CreatedAt != nil { - modelMap["created_at"] = model.CreatedAt.String() - } - if model.CreatedBy != nil { - modelMap["created_by"] = *model.CreatedBy - } - if model.CRN != nil { - modelMap["crn"] = *model.CRN - } - if model.Description != nil { - modelMap["description"] = *model.Description - } - if model.ID != nil { - modelMap["id"] = *model.ID - } - if model.Location != nil { - modelMap["location"] = *model.Location - } - if model.Name != nil { - modelMap["name"] = *model.Name - } - if model.Status != nil { - modelMap["status"] = *model.Status - } - return modelMap, nil -} - -func DataSourceIbmPdrSchematicWorkspacesDrAutomationCatalogRefToMap(model *drautomationservicev1.DrAutomationCatalogRef) (map[string]interface{}, error) { - modelMap := make(map[string]interface{}) - if model.ItemName != nil { - modelMap["item_name"] = *model.ItemName - } - return modelMap, nil -} diff --git a/ibm/service/drautomationservice/data_source_ibm_pdr_schematic_workspaces_test.go b/ibm/service/drautomationservice/data_source_ibm_pdr_schematic_workspaces_test.go deleted file mode 100644 index eb5de7d988..0000000000 --- a/ibm/service/drautomationservice/data_source_ibm_pdr_schematic_workspaces_test.go +++ /dev/null @@ -1,103 +0,0 @@ -// Copyright IBM Corp. 2025 All Rights Reserved. -// Licensed under the Mozilla Public License v2.0 - -/* - * IBM OpenAPI Terraform Generator Version: 3.105.0-3c13b041-20250605-193116 -*/ - -package drautomationservice_test - -import ( - "fmt" - "testing" - - "github.com/hashicorp/terraform-plugin-testing/helper/resource" - - "github.com/IBM-Cloud/terraform-provider-ibm/ibm/service/drautomationservice" - "github.com/IBM/go-sdk-core/v5/core" - "github.com/stretchr/testify/assert" - "github.ibm.com/DRAutomation/dra-go-sdk/drautomationservicev1" - . "github.com/IBM-Cloud/terraform-provider-ibm/ibm/unittest" - acc "github.com/IBM-Cloud/terraform-provider-ibm/ibm/acctest" -) - -func TestAccIbmPdrSchematicWorkspacesDataSourceBasic(t *testing.T) { - resource.Test(t, resource.TestCase{ - PreCheck: func() { acc.TestAccPreCheck(t) }, - Providers: acc.TestAccProviders, - Steps: []resource.TestStep{ - resource.TestStep{ - Config: testAccCheckIbmPdrSchematicWorkspacesDataSourceConfigBasic(), - Check: resource.ComposeTestCheckFunc( - resource.TestCheckResourceAttrSet("data.ibm_pdr_schematic_workspaces.pdr_schematic_workspaces_instance", "id"), - resource.TestCheckResourceAttrSet("data.ibm_pdr_schematic_workspaces.pdr_schematic_workspaces_instance", "instance_id"), - resource.TestCheckResourceAttrSet("data.ibm_pdr_schematic_workspaces.pdr_schematic_workspaces_instance", "workspaces.#"), - ), - }, - }, - }) -} - -func testAccCheckIbmPdrSchematicWorkspacesDataSourceConfigBasic() string { - return fmt.Sprintf(` - data "ibm_pdr_schematic_workspaces" "pdr_schematic_workspaces_instance" { - instance_id = "crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::" - If-None-Match = "If-None-Match" - } - `) -} - - -func TestDataSourceIbmPdrSchematicWorkspacesDrAutomationSchematicsWorkspaceToMap(t *testing.T) { - checkResult := func(result map[string]interface{}) { - drAutomationCatalogRefModel := make(map[string]interface{}) - drAutomationCatalogRefModel["item_name"] = "Power Virtual Server with VPC landing zone" - - model := make(map[string]interface{}) - model["catalog_ref"] = []map[string]interface{}{drAutomationCatalogRefModel} - model["created_at"] = "2025-02-24T11:18:49.819Z" - model["created_by"] = "crn:v1:bluemix:public:project:eu-gb:a/094f4214c75941f94c2w1g1b001df1fe:fbe45gs9-d3c6-hny3-898d-ff2e6rfes257::" - model["crn"] = "crn:v1:bluemix:public:schematics:eu-de:a/094f42141234567891da601b001df1fe:59389f45-a1d7-085g-8abe-7a28327e5574:workspace:eu-gb.workspace.projects-service.42a7ab33" - model["description"] = "A configuration of the 54f31234-e74f-4567-a0a8-367b45658765 project" - model["id"] = "A configuration of the fbe4a122-d3c6-4543-898d-ff2e6df74123 project" - model["location"] = "us-south" - model["name"] = "testWorkspace" - model["status"] = "testString" - - assert.Equal(t, result, model) - } - - drAutomationCatalogRefModel := new(drautomationservicev1.DrAutomationCatalogRef) - drAutomationCatalogRefModel.ItemName = core.StringPtr("Power Virtual Server with VPC landing zone") - - model := new(drautomationservicev1.DrAutomationSchematicsWorkspace) - model.CatalogRef = drAutomationCatalogRefModel - model.CreatedAt = CreateMockDateTime("2025-02-24T11:18:49.819Z") - model.CreatedBy = core.StringPtr("crn:v1:bluemix:public:project:eu-gb:a/094f4214c75941f94c2w1g1b001df1fe:fbe45gs9-d3c6-hny3-898d-ff2e6rfes257::") - model.CRN = core.StringPtr("crn:v1:bluemix:public:schematics:eu-de:a/094f42141234567891da601b001df1fe:59389f45-a1d7-085g-8abe-7a28327e5574:workspace:eu-gb.workspace.projects-service.42a7ab33") - model.Description = core.StringPtr("A configuration of the 54f31234-e74f-4567-a0a8-367b45658765 project") - model.ID = core.StringPtr("A configuration of the fbe4a122-d3c6-4543-898d-ff2e6df74123 project") - model.Location = core.StringPtr("us-south") - model.Name = core.StringPtr("testWorkspace") - model.Status = core.StringPtr("testString") - - result, err := drautomationservice.DataSourceIbmPdrSchematicWorkspacesDrAutomationSchematicsWorkspaceToMap(model) - assert.Nil(t, err) - checkResult(result) -} - -func TestDataSourceIbmPdrSchematicWorkspacesDrAutomationCatalogRefToMap(t *testing.T) { - checkResult := func(result map[string]interface{}) { - model := make(map[string]interface{}) - model["item_name"] = "Power Virtual Server with VPC landing zone" - - assert.Equal(t, result, model) - } - - model := new(drautomationservicev1.DrAutomationCatalogRef) - model.ItemName = core.StringPtr("Power Virtual Server with VPC landing zone") - - result, err := drautomationservice.DataSourceIbmPdrSchematicWorkspacesDrAutomationCatalogRefToMap(model) - assert.Nil(t, err) - checkResult(result) -} diff --git a/ibm/service/drautomationservice/data_source_ibm_pdr_workspace_custom_vpc.go b/ibm/service/drautomationservice/data_source_ibm_pdr_workspace_custom_vpc.go deleted file mode 100644 index 7599c63115..0000000000 --- a/ibm/service/drautomationservice/data_source_ibm_pdr_workspace_custom_vpc.go +++ /dev/null @@ -1,325 +0,0 @@ -// Copyright IBM Corp. 2025 All Rights Reserved. -// Licensed under the Mozilla Public License v2.0 - -/* - * IBM OpenAPI Terraform Generator Version: 3.105.0-3c13b041-20250605-193116 - */ - -package drautomationservice - -import ( - "context" - "fmt" - "log" - "time" - - "github.com/hashicorp/terraform-plugin-sdk/v2/diag" - "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" - - "github.com/IBM-Cloud/terraform-provider-ibm/ibm/conns" - "github.com/IBM-Cloud/terraform-provider-ibm/ibm/flex" - "github.ibm.com/DRAutomation/dra-go-sdk/drautomationservicev1" -) - -func DataSourceIbmPdrWorkspaceCustomVpc() *schema.Resource { - return &schema.Resource{ - ReadContext: dataSourceIbmPdrWorkspaceCustomVpcRead, - - Schema: map[string]*schema.Schema{ - "instance_id": &schema.Schema{ - Type: schema.TypeString, - Required: true, - Description: "instance id of instance to provision.", - }, - "location_id": &schema.Schema{ - Type: schema.TypeString, - Required: true, - Description: "Location ID value.", - }, - "vpc_id": &schema.Schema{ - Type: schema.TypeString, - Required: true, - Description: "vpc id value.", - }, - "tg_id": &schema.Schema{ - Type: schema.TypeString, - Required: true, - Description: "transit gateway id value.", - }, - "if_none_match": &schema.Schema{ - Type: schema.TypeString, - Optional: true, - Description: "ETag for conditional requests (optional).", - }, - "dr_standby_workspaces": &schema.Schema{ - Type: schema.TypeList, - Computed: true, - Description: "List of standby disaster recovery workspaces.", - Elem: &schema.Resource{ - Schema: map[string]*schema.Schema{ - "details": &schema.Schema{ - Type: schema.TypeList, - Computed: true, - Description: "Detailed information of the standby DR workspace.", - Elem: &schema.Resource{ - Schema: map[string]*schema.Schema{ - "crn": &schema.Schema{ - Type: schema.TypeString, - Computed: true, - Description: "Cloud Resource Name (CRN) of the DR workspace.", - }, - }, - }, - }, - "id": &schema.Schema{ - Type: schema.TypeString, - Computed: true, - Description: "Unique identifier of the standby workspace.", - }, - "location": &schema.Schema{ - Type: schema.TypeList, - Computed: true, - Description: "Location information of the standby workspace.", - Elem: &schema.Resource{ - Schema: map[string]*schema.Schema{ - "region": &schema.Schema{ - Type: schema.TypeString, - Computed: true, - Description: "The region identifier of the DR location.", - }, - "type": &schema.Schema{ - Type: schema.TypeString, - Computed: true, - Description: "The type of location (e.g., data-center, cloud-region).", - }, - "url": &schema.Schema{ - Type: schema.TypeString, - Computed: true, - Description: "The URL endpoint to access the DR location.", - }, - }, - }, - }, - "name": &schema.Schema{ - Type: schema.TypeString, - Computed: true, - Description: "Name of the standby workspace.", - }, - "status": &schema.Schema{ - Type: schema.TypeString, - Computed: true, - Description: "Current status of the standby workspace.", - }, - }, - }, - }, - "dr_workspaces": &schema.Schema{ - Type: schema.TypeList, - Computed: true, - Description: "List of primary disaster recovery workspaces.", - Elem: &schema.Resource{ - Schema: map[string]*schema.Schema{ - "default": &schema.Schema{ - Type: schema.TypeBool, - Computed: true, - Description: "Indicates if this is the default DR workspace.", - }, - "details": &schema.Schema{ - Type: schema.TypeList, - Computed: true, - Description: "Detailed information about the DR workspace.", - Elem: &schema.Resource{ - Schema: map[string]*schema.Schema{ - "crn": &schema.Schema{ - Type: schema.TypeString, - Computed: true, - Description: "Cloud Resource Name (CRN) of the DR workspace.", - }, - }, - }, - }, - "id": &schema.Schema{ - Type: schema.TypeString, - Computed: true, - Description: "Unique identifier of the DR workspace.", - }, - "location": &schema.Schema{ - Type: schema.TypeList, - Computed: true, - Description: "Location information of the DR workspace.", - Elem: &schema.Resource{ - Schema: map[string]*schema.Schema{ - "region": &schema.Schema{ - Type: schema.TypeString, - Computed: true, - Description: "The region identifier of the DR location.", - }, - "type": &schema.Schema{ - Type: schema.TypeString, - Computed: true, - Description: "The type of location (e.g., data-center, cloud-region).", - }, - "url": &schema.Schema{ - Type: schema.TypeString, - Computed: true, - Description: "The URL endpoint to access the DR location.", - }, - }, - }, - }, - "name": &schema.Schema{ - Type: schema.TypeString, - Computed: true, - Description: "Name of the DR workspace.", - }, - "status": &schema.Schema{ - Type: schema.TypeString, - Computed: true, - Description: "Current status of the DR workspace.", - }, - }, - }, - }, - }, - } -} - -func dataSourceIbmPdrWorkspaceCustomVpcRead(context context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { - drAutomationServiceClient, err := meta.(conns.ClientSession).DrAutomationServiceV1() - if err != nil { - tfErr := flex.DiscriminatedTerraformErrorf(err, err.Error(), "(Data) ibm_pdr_workspace_custom_vpc", "read", "initialize-client") - log.Printf("[DEBUG]\n%s", tfErr.GetDebugMessage()) - return tfErr.GetDiag() - } - - getPowervsWorkspacesForCustomVpcOptions := &drautomationservicev1.GetPowervsWorkspacesForCustomVPCOptions{} - - getPowervsWorkspacesForCustomVpcOptions.SetInstanceID(d.Get("instance_id").(string)) - getPowervsWorkspacesForCustomVpcOptions.SetLocationID(d.Get("location_id").(string)) - getPowervsWorkspacesForCustomVpcOptions.SetVPCID(d.Get("vpc_id").(string)) - getPowervsWorkspacesForCustomVpcOptions.SetTgID(d.Get("tg_id").(string)) - if _, ok := d.GetOk("if_none_match"); ok { - getPowervsWorkspacesForCustomVpcOptions.SetIfNoneMatch(d.Get("if_none_match").(string)) - } - - drDataCustomVPC, _, err := drAutomationServiceClient.GetPowervsWorkspacesForCustomVPCWithContext(context, getPowervsWorkspacesForCustomVpcOptions) - if err != nil { - tfErr := flex.TerraformErrorf(err, fmt.Sprintf("GetPowervsWorkspacesForCustomVpcWithContext failed: %s", err.Error()), "(Data) ibm_pdr_workspace_custom_vpc", "read") - log.Printf("[DEBUG]\n%s", tfErr.GetDebugMessage()) - return tfErr.GetDiag() - } - - d.SetId(dataSourceIbmPdrWorkspaceCustomVpcID(d)) - - drStandbyWorkspaces := []map[string]interface{}{} - for _, drStandbyWorkspacesItem := range drDataCustomVPC.DrStandbyWorkspaces { - drStandbyWorkspacesItemMap, err := DataSourceIbmPdrWorkspaceCustomVpcDRStandbyWorkspaceToMap(&drStandbyWorkspacesItem) // #nosec G601 - if err != nil { - return flex.DiscriminatedTerraformErrorf(err, err.Error(), "(Data) ibm_pdr_workspace_custom_vpc", "read", "dr_standby_workspaces-to-map").GetDiag() - } - drStandbyWorkspaces = append(drStandbyWorkspaces, drStandbyWorkspacesItemMap) - } - if err = d.Set("dr_standby_workspaces", drStandbyWorkspaces); err != nil { - return flex.DiscriminatedTerraformErrorf(err, fmt.Sprintf("Error setting dr_standby_workspaces: %s", err), "(Data) ibm_pdr_workspace_custom_vpc", "read", "set-dr_standby_workspaces").GetDiag() - } - - drWorkspaces := []map[string]interface{}{} - for _, drWorkspacesItem := range drDataCustomVPC.DrWorkspaces { - drWorkspacesItemMap, err := DataSourceIbmPdrWorkspaceCustomVpcDRWorkspaceToMap(&drWorkspacesItem) // #nosec G601 - if err != nil { - return flex.DiscriminatedTerraformErrorf(err, err.Error(), "(Data) ibm_pdr_workspace_custom_vpc", "read", "dr_workspaces-to-map").GetDiag() - } - drWorkspaces = append(drWorkspaces, drWorkspacesItemMap) - } - if err = d.Set("dr_workspaces", drWorkspaces); err != nil { - return flex.DiscriminatedTerraformErrorf(err, fmt.Sprintf("Error setting dr_workspaces: %s", err), "(Data) ibm_pdr_workspace_custom_vpc", "read", "set-dr_workspaces").GetDiag() - } - - return nil -} - -// dataSourceIbmPdrWorkspaceCustomVpcID returns a reasonable ID for the list. -func dataSourceIbmPdrWorkspaceCustomVpcID(d *schema.ResourceData) string { - return time.Now().UTC().String() -} - -func DataSourceIbmPdrWorkspaceCustomVpcDRStandbyWorkspaceToMap(model *drautomationservicev1.DrStandbyWorkspace) (map[string]interface{}, error) { - modelMap := make(map[string]interface{}) - if model.Details != nil { - detailsMap, err := DataSourceIbmPdrWorkspaceCustomVpcDetailsDrToMap(model.Details) - if err != nil { - return modelMap, err - } - modelMap["details"] = []map[string]interface{}{detailsMap} - } - if model.ID != nil { - modelMap["id"] = *model.ID - } - if model.Location != nil { - locationMap, err := DataSourceIbmPdrWorkspaceCustomVpcLocationDrToMap(model.Location) - if err != nil { - return modelMap, err - } - modelMap["location"] = []map[string]interface{}{locationMap} - } - if model.Name != nil { - modelMap["name"] = *model.Name - } - if model.Status != nil { - modelMap["status"] = *model.Status - } - return modelMap, nil -} - -func DataSourceIbmPdrWorkspaceCustomVpcDetailsDrToMap(model *drautomationservicev1.DetailsDr) (map[string]interface{}, error) { - modelMap := make(map[string]interface{}) - if model.CRN != nil { - modelMap["crn"] = *model.CRN - } - return modelMap, nil -} - -func DataSourceIbmPdrWorkspaceCustomVpcLocationDrToMap(model *drautomationservicev1.LocationDr) (map[string]interface{}, error) { - modelMap := make(map[string]interface{}) - if model.Region != nil { - modelMap["region"] = *model.Region - } - if model.Type != nil { - modelMap["type"] = *model.Type - } - if model.URL != nil { - modelMap["url"] = *model.URL - } - return modelMap, nil -} - -func DataSourceIbmPdrWorkspaceCustomVpcDRWorkspaceToMap(model *drautomationservicev1.DrWorkspace) (map[string]interface{}, error) { - modelMap := make(map[string]interface{}) - if model.Default != nil { - modelMap["default"] = *model.Default - } - if model.Details != nil { - detailsMap, err := DataSourceIbmPdrWorkspaceCustomVpcDetailsDrToMap(model.Details) - if err != nil { - return modelMap, err - } - modelMap["details"] = []map[string]interface{}{detailsMap} - } - if model.ID != nil { - modelMap["id"] = *model.ID - } - if model.Location != nil { - locationMap, err := DataSourceIbmPdrWorkspaceCustomVpcLocationDrToMap(model.Location) - if err != nil { - return modelMap, err - } - modelMap["location"] = []map[string]interface{}{locationMap} - } - if model.Name != nil { - modelMap["name"] = *model.Name - } - if model.Status != nil { - modelMap["status"] = *model.Status - } - return modelMap, nil -} diff --git a/ibm/service/drautomationservice/data_source_ibm_pdr_workspace_custom_vpc_test.go b/ibm/service/drautomationservice/data_source_ibm_pdr_workspace_custom_vpc_test.go deleted file mode 100644 index 8ee790802c..0000000000 --- a/ibm/service/drautomationservice/data_source_ibm_pdr_workspace_custom_vpc_test.go +++ /dev/null @@ -1,172 +0,0 @@ -// Copyright IBM Corp. 2025 All Rights Reserved. -// Licensed under the Mozilla Public License v2.0 - -/* - * IBM OpenAPI Terraform Generator Version: 3.105.0-3c13b041-20250605-193116 - */ - -package drautomationservice_test - -import ( - "fmt" - "testing" - - "github.com/hashicorp/terraform-plugin-testing/helper/resource" - - acc "github.com/IBM-Cloud/terraform-provider-ibm/ibm/acctest" - "github.com/IBM-Cloud/terraform-provider-ibm/ibm/service/drautomationservice" - "github.com/IBM/go-sdk-core/v5/core" - "github.com/stretchr/testify/assert" - "github.ibm.com/DRAutomation/dra-go-sdk/drautomationservicev1" -) - -func TestAccIbmPdrWorkspaceCustomVpcDataSourceBasic(t *testing.T) { - resource.Test(t, resource.TestCase{ - PreCheck: func() { acc.TestAccPreCheck(t) }, - Providers: acc.TestAccProviders, - Steps: []resource.TestStep{ - resource.TestStep{ - Config: testAccCheckIbmPdrWorkspaceCustomVpcDataSourceConfigBasic(), - Check: resource.ComposeTestCheckFunc( - resource.TestCheckResourceAttrSet("data.ibm_pdr_workspace_custom_vpc.pdr_workspace_custom_vpc_instance", "id"), - resource.TestCheckResourceAttrSet("data.ibm_pdr_workspace_custom_vpc.pdr_workspace_custom_vpc_instance", "instance_id"), - resource.TestCheckResourceAttrSet("data.ibm_pdr_workspace_custom_vpc.pdr_workspace_custom_vpc_instance", "location_id"), - resource.TestCheckResourceAttrSet("data.ibm_pdr_workspace_custom_vpc.pdr_workspace_custom_vpc_instance", "vpc_id"), - resource.TestCheckResourceAttrSet("data.ibm_pdr_workspace_custom_vpc.pdr_workspace_custom_vpc_instance", "tg_id"), - resource.TestCheckResourceAttrSet("data.ibm_pdr_workspace_custom_vpc.pdr_workspace_custom_vpc_instance", "dr_standby_workspaces.#"), - resource.TestCheckResourceAttrSet("data.ibm_pdr_workspace_custom_vpc.pdr_workspace_custom_vpc_instance", "dr_workspaces.#"), - ), - }, - }, - }) -} - -func testAccCheckIbmPdrWorkspaceCustomVpcDataSourceConfigBasic() string { - return fmt.Sprintf(` - data "ibm_pdr_workspace_custom_vpc" "pdr_workspace_custom_vpc_instance" { - instance_id = "crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::" - location_id = "location_id" - vpc_id = "r006-2f3b3ab9-2149-49cc-83a1-30a5d93d59b2" - tg_id = "925a7b81-a826-4d0a-8ef9-7496e9dc58bc" - If-None-Match = "If-None-Match" - } - `) -} - -func TestDataSourceIbmPdrWorkspaceCustomVpcDRStandbyWorkspaceToMap(t *testing.T) { - checkResult := func(result map[string]interface{}) { - detailsDrModel := make(map[string]interface{}) - detailsDrModel["crn"] = "crn:v1:bluemix:public:power-iaas:lon06:a/094f4214c75941f991da601b001df1fe:b6297e60-d0fe-4e24-8b15-276cf0645737::" - - locationDrModel := make(map[string]interface{}) - locationDrModel["region"] = "lon06" - locationDrModel["type"] = "data-center" - locationDrModel["url"] = "https://lon.power-iaas.cloud.ibm.com" - - model := make(map[string]interface{}) - model["details"] = []map[string]interface{}{detailsDrModel} - model["id"] = "testString" - model["location"] = []map[string]interface{}{locationDrModel} - model["name"] = "testString" - model["status"] = "testString" - - assert.Equal(t, result, model) - } - - detailsDrModel := new(drautomationservicev1.DetailsDr) - detailsDrModel.CRN = core.StringPtr("crn:v1:bluemix:public:power-iaas:lon06:a/094f4214c75941f991da601b001df1fe:b6297e60-d0fe-4e24-8b15-276cf0645737::") - - locationDrModel := new(drautomationservicev1.LocationDr) - locationDrModel.Region = core.StringPtr("lon06") - locationDrModel.Type = core.StringPtr("data-center") - locationDrModel.URL = core.StringPtr("https://lon.power-iaas.cloud.ibm.com") - - model := new(drautomationservicev1.DrStandbyWorkspace) - model.Details = detailsDrModel - model.ID = core.StringPtr("testString") - model.Location = locationDrModel - model.Name = core.StringPtr("testString") - model.Status = core.StringPtr("testString") - - result, err := drautomationservice.DataSourceIbmPdrWorkspaceCustomVpcDRStandbyWorkspaceToMap(model) - assert.Nil(t, err) - checkResult(result) -} - -func TestDataSourceIbmPdrWorkspaceCustomVpcDetailsDrToMap(t *testing.T) { - checkResult := func(result map[string]interface{}) { - model := make(map[string]interface{}) - model["crn"] = "crn:v1:bluemix:public:power-iaas:lon06:a/094f4214c75941f991da601b001df1fe:b6297e60-d0fe-4e24-8b15-276cf0645737::" - - assert.Equal(t, result, model) - } - - model := new(drautomationservicev1.DetailsDr) - model.CRN = core.StringPtr("crn:v1:bluemix:public:power-iaas:lon06:a/094f4214c75941f991da601b001df1fe:b6297e60-d0fe-4e24-8b15-276cf0645737::") - - result, err := drautomationservice.DataSourceIbmPdrWorkspaceCustomVpcDetailsDrToMap(model) - assert.Nil(t, err) - checkResult(result) -} - -func TestDataSourceIbmPdrWorkspaceCustomVpcLocationDrToMap(t *testing.T) { - checkResult := func(result map[string]interface{}) { - model := make(map[string]interface{}) - model["region"] = "lon06" - model["type"] = "data-center" - model["url"] = "https://lon.power-iaas.cloud.ibm.com" - - assert.Equal(t, result, model) - } - - model := new(drautomationservicev1.LocationDr) - model.Region = core.StringPtr("lon06") - model.Type = core.StringPtr("data-center") - model.URL = core.StringPtr("https://lon.power-iaas.cloud.ibm.com") - - result, err := drautomationservice.DataSourceIbmPdrWorkspaceCustomVpcLocationDrToMap(model) - assert.Nil(t, err) - checkResult(result) -} - -func TestDataSourceIbmPdrWorkspaceCustomVpcDRWorkspaceToMap(t *testing.T) { - checkResult := func(result map[string]interface{}) { - detailsDrModel := make(map[string]interface{}) - detailsDrModel["crn"] = "crn:v1:bluemix:public:power-iaas:lon06:a/094f4214c75941f991da601b001df1fe:b6297e60-d0fe-4e24-8b15-276cf0645737::" - - locationDrModel := make(map[string]interface{}) - locationDrModel["region"] = "lon06" - locationDrModel["type"] = "data-center" - locationDrModel["url"] = "https://lon.power-iaas.cloud.ibm.com" - - model := make(map[string]interface{}) - model["default"] = true - model["details"] = []map[string]interface{}{detailsDrModel} - model["id"] = "testString" - model["location"] = []map[string]interface{}{locationDrModel} - model["name"] = "testString" - model["status"] = "active" - - assert.Equal(t, result, model) - } - - detailsDrModel := new(drautomationservicev1.DetailsDr) - detailsDrModel.CRN = core.StringPtr("crn:v1:bluemix:public:power-iaas:lon06:a/094f4214c75941f991da601b001df1fe:b6297e60-d0fe-4e24-8b15-276cf0645737::") - - locationDrModel := new(drautomationservicev1.LocationDr) - locationDrModel.Region = core.StringPtr("lon06") - locationDrModel.Type = core.StringPtr("data-center") - locationDrModel.URL = core.StringPtr("https://lon.power-iaas.cloud.ibm.com") - - model := new(drautomationservicev1.DrWorkspace) - model.Default = core.BoolPtr(true) - model.Details = detailsDrModel - model.ID = core.StringPtr("testString") - model.Location = locationDrModel - model.Name = core.StringPtr("testString") - model.Status = core.StringPtr("active") - - result, err := drautomationservice.DataSourceIbmPdrWorkspaceCustomVpcDRWorkspaceToMap(model) - assert.Nil(t, err) - checkResult(result) -} diff --git a/ibm/service/drautomationservice/resource_ibm_pdr_managedr.go b/ibm/service/drautomationservice/resource_ibm_pdr_managedr.go index da15c00cac..cd54aa5cd2 100644 --- a/ibm/service/drautomationservice/resource_ibm_pdr_managedr.go +++ b/ibm/service/drautomationservice/resource_ibm_pdr_managedr.go @@ -11,6 +11,8 @@ import ( "context" "fmt" "log" + "strings" + "time" "github.com/hashicorp/terraform-plugin-sdk/v2/diag" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" @@ -37,11 +39,21 @@ func ResourceIbmPdrManagedr() *schema.Resource { Description: "instance id of instance to provision.", }, "stand_by_redeploy": &schema.Schema{ - Type: schema.TypeString, - Required: true, - ForceNew: true, - ValidateFunc: validate.InvokeValidator("ibm_pdr_managedr", "stand_by_redeploy"), - Description: "Flag to indicate if standby should be redeployed (must be \"true\" or \"false\").", + Type: schema.TypeString, + Optional: true, + ForceNew: true, + ValidateFunc: func(val interface{}, key string) (warns []string, errs []error) { + v := val.(string) + allowed := []string{"true", "false"} + for _, a := range allowed { + if v == a { + return + } + } + errs = append(errs, fmt.Errorf("%q must be one of %v, got: %s", key, allowed, v)) + return + }, + Description: "Flag to indicate if standby should be redeployed (must be \"true\" or \"false\").", }, "accept_language": &schema.Schema{ Type: schema.TypeString, @@ -49,12 +61,6 @@ func ResourceIbmPdrManagedr() *schema.Resource { ForceNew: true, Description: "The language requested for the return document.", }, - "if_none_match": &schema.Schema{ - Type: schema.TypeString, - Optional: true, - ForceNew: true, - Description: "ETag for conditional requests (optional).", - }, "accepts_incomplete": &schema.Schema{ Type: schema.TypeBool, Optional: true, @@ -134,11 +140,6 @@ func ResourceIbmPdrManagedr() *schema.Resource { ForceNew: true, Optional: true, }, - "proxy_ip": { - Type: schema.TypeString, - Optional: true, - ForceNew: true, - }, "region_id": { Type: schema.TypeString, ForceNew: true, @@ -149,11 +150,6 @@ func ResourceIbmPdrManagedr() *schema.Resource { ForceNew: true, Optional: true, }, - "schematic_workspace_id": { - Type: schema.TypeString, - Optional: true, - ForceNew: true, - }, "secondary_workspace_id": { Type: schema.TypeString, Optional: true, @@ -199,11 +195,6 @@ func ResourceIbmPdrManagedr() *schema.Resource { Optional: true, ForceNew: true, }, - "standby_schematic_workspace_id": { - Type: schema.TypeString, - Optional: true, - ForceNew: true, - }, "standby_tier": { Type: schema.TypeString, Optional: true, @@ -214,16 +205,6 @@ func ResourceIbmPdrManagedr() *schema.Resource { Optional: true, ForceNew: true, }, - "transit_gateway_id": { - Type: schema.TypeString, - Optional: true, - ForceNew: true, - }, - "vpc_id": { - Type: schema.TypeString, - Optional: true, - ForceNew: true, - }, }, } } @@ -290,18 +271,12 @@ func resourceIbmPdrManagedrCreate(context context.Context, d *schema.ResourceDat if _, ok := d.GetOk("orchestrator_workspace_location"); ok { createManageDrOptions.SetOrchestratorWorkspaceLocation(d.Get("orchestrator_workspace_location").(string)) } - if _, ok := d.GetOk("proxy_ip"); ok { - createManageDrOptions.SetProxyIP(d.Get("proxy_ip").(string)) - } if _, ok := d.GetOk("region_id"); ok { createManageDrOptions.SetRegionID(d.Get("region_id").(string)) } if _, ok := d.GetOk("resource_instance"); ok { createManageDrOptions.SetResourceInstance(d.Get("resource_instance").(string)) } - if _, ok := d.GetOk("schematic_workspace_id"); ok { - createManageDrOptions.SetSchematicWorkspaceID(d.Get("schematic_workspace_id").(string)) - } if _, ok := d.GetOk("secondary_workspace_id"); ok { createManageDrOptions.SetSecondaryWorkspaceID(d.Get("secondary_workspace_id").(string)) } @@ -326,41 +301,147 @@ func resourceIbmPdrManagedrCreate(context context.Context, d *schema.ResourceDat if _, ok := d.GetOk("standby_orchestrator_workspace_location"); ok { createManageDrOptions.SetStandbyOrchestratorWorkspaceLocation(d.Get("standby_orchestrator_workspace_location").(string)) } - if _, ok := d.GetOk("standby_schematic_workspace_id"); ok { - createManageDrOptions.SetStandbySchematicWorkspaceID(d.Get("standby_schematic_workspace_id").(string)) - } if _, ok := d.GetOk("standby_tier"); ok { createManageDrOptions.SetStandbyTier(d.Get("standby_tier").(string)) } if _, ok := d.GetOk("tier"); ok { createManageDrOptions.SetTier(d.Get("tier").(string)) } - if _, ok := d.GetOk("transit_gateway_id"); ok { - createManageDrOptions.SetTransitGatewayID(d.Get("transit_gateway_id").(string)) - } - if _, ok := d.GetOk("vpc_id"); ok { - createManageDrOptions.SetVPCID(d.Get("vpc_id").(string)) - } if _, ok := d.GetOk("accept_language"); ok { createManageDrOptions.SetAcceptLanguage(d.Get("accept_language").(string)) } - if _, ok := d.GetOk("if_none_match"); ok { - createManageDrOptions.SetIfNoneMatch(d.Get("if_none_match").(string)) - } + // if _, ok := d.GetOk("if_none_match"); ok { + // createManageDrOptions.SetIfNoneMatch(d.Get("if_none_match").(string)) + // } if _, ok := d.GetOk("accepts_incomplete"); ok { createManageDrOptions.SetAcceptsIncomplete(d.Get("accepts_incomplete").(bool)) } - serviceInstanceManageDr, _, err := drAutomationServiceClient.CreateManageDrWithContext(context, createManageDrOptions) + serviceInstanceManageDr, response, err := drAutomationServiceClient.CreateManageDrWithContext(context, createManageDrOptions) if err != nil { - tfErr := flex.TerraformErrorf(err, fmt.Sprintf("CreateManageDrWithContext failed: %s", err.Error()), "ibm_pdr_managedr", "create") - log.Printf("[DEBUG]\n%s", tfErr.GetDebugMessage()) + detailedMsg := fmt.Sprintf("CreateManageDrWithContext failed: %s", err.Error()) + // Include HTTP status & raw body if available + if response != nil { + detailedMsg = fmt.Sprintf( + "CreateManageDrWithContext failed: %s (status: %d, response: %s)", + err.Error(), response.StatusCode, response.Result, + ) + } + tfErr := flex.TerraformErrorf(err, detailedMsg, "ibm_pdr_managedr", "create") + log.Printf("[ERROR] %s", detailedMsg) return tfErr.GetDiag() } - d.SetId(fmt.Sprintf("%s/%s", *createManageDrOptions.InstanceID, *serviceInstanceManageDr.ID)) + d.SetId(fmt.Sprintf("%s", *serviceInstanceManageDr.ID)) + // Step 2: Poll Last Operation status every 5 minutes until Active or Fail + instanceID := *createManageDrOptions.InstanceID + const ( + pollInterval = 1 * time.Minute + maxWaitTime = 75 * time.Minute // optional, can extend as needed + ) + timeout := time.After(maxWaitTime) + ticker := time.NewTicker(pollInterval) + // defer ticker.Stop() + + log.Printf("[INFO] Started polling last operation status for instance %s every %s", instanceID, pollInterval) + enableha, _ := d.GetOk("orchestrator_ha") + + if !enableha.(bool) { + for { + select { + case <-timeout: + errMsg := fmt.Sprintf("Timeout exceeded while waiting for Manage DR to become Active (instance_id: %s)", instanceID) + tfErr := flex.TerraformErrorf(fmt.Errorf("%s", errMsg), errMsg, "ibm_pdr_managedr", "create") + log.Printf("[ERROR] %s", errMsg) + ticker.Stop() + return tfErr.GetDiag() + + case <-ticker.C: + status, _, _, statusErr, errormessage := checkLastOperationStatus(context, drAutomationServiceClient, instanceID) + if statusErr != nil { + tfErr := flex.TerraformErrorf(statusErr, fmt.Sprintf("GetLastOperation failed: %s", statusErr.Error()), "ibm_pdr_managedr", "create") + log.Printf("[DEBUG]\n%s", tfErr.GetDebugMessage()) + ticker.Stop() + return tfErr.GetDiag() + } + + log.Printf("[INFO] Current Last Operation status for instance %s: %s", instanceID, status) + + switch strings.ToLower(status) { + case "active": + log.Printf("[INFO] Manage DR operation completed successfully for instance %s", instanceID) + ticker.Stop() + return resourceIbmPdrManagedrRead(context, d, meta) + + case "fail", "failed", "error": + errMsg := fmt.Sprintf("Manage DR operation failed for instance %s (status: %s) and error message: %s", instanceID, status, errormessage) + tfErr := flex.TerraformErrorf(fmt.Errorf("%s", errMsg), errMsg, "ibm_pdr_managedr", "create") + + log.Printf("[ERROR] %s", errMsg) + ticker.Stop() + return tfErr.GetDiag() + + default: + log.Printf("[DEBUG] Manage DR still in progress (status: %s)... retrying in %v", status, pollInterval) + } + } + } + } else { + for { + select { + case <-timeout: + errMsg := fmt.Sprintf("Timeout exceeded while waiting for Manage DR to become Active (instance_id: %s)", instanceID) + tfErr := flex.TerraformErrorf(fmt.Errorf("%s", errMsg), errMsg, "ibm_pdr_managedr", "create") + log.Printf("[ERROR] %s", errMsg) + ticker.Stop() + return tfErr.GetDiag() + + case <-ticker.C: + status, _, standbyStatus, statusErr, errormessage := checkLastOperationStatus(context, drAutomationServiceClient, instanceID) + if statusErr != nil { + tfErr := flex.TerraformErrorf(statusErr, fmt.Sprintf("GetLastOperation failed: %s", statusErr.Error()), "ibm_pdr_managedr", "create") + log.Printf("[DEBUG]\n%s", tfErr.GetDebugMessage()) + ticker.Stop() + return tfErr.GetDiag() + } + + log.Printf("[INFO] Current Last Operation status for instance %s: %s", instanceID, status) + + switch strings.ToLower(status) { + case "active": + if strings.ToLower(standbyStatus) == "active" { + log.Printf("[INFO] Manage DR operation completed successfully for instance %s (both primary and standby active)", instanceID) + ticker.Stop() + return resourceIbmPdrManagedrRead(context, d, meta) + } + if strings.ToLower(standbyStatus) == "failed" { + log.Printf("[INFO] Standby Orchestrator Failed for instance %s", instanceID) + ticker.Stop() + return resourceIbmPdrManagedrRead(context, d, meta) + } + + // If standby still initializing + log.Printf("[INFO] Manage DR overall status is Active, but standby orchestrator still in progress (status: %s). Retrying in %v...", + standbyStatus, pollInterval) + continue + + case "fail", "failed", "error": + errMsg := fmt.Sprintf("Manage DR operation failed for instance %s (status: %s) and error message: %s", instanceID, status, errormessage) + tfErr := flex.TerraformErrorf(fmt.Errorf("%s", errMsg), errMsg, "ibm_pdr_managedr", "create") + + log.Printf("[ERROR] %s", errMsg) + ticker.Stop() + return tfErr.GetDiag() + + default: + log.Printf("[DEBUG] Manage DR still in progress (status: %s)... retrying in %v", status, pollInterval) + } + } + } + } + + // return resourceIbmPdrManagedrRead(context, d, meta) - return resourceIbmPdrManagedrRead(context, d, meta) } func resourceIbmPdrManagedrRead(context context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { @@ -373,33 +454,31 @@ func resourceIbmPdrManagedrRead(context context.Context, d *schema.ResourceData, getManageDrOptions := &drautomationservicev1.GetManageDrOptions{} - // parts, err := flex.SepIdParts(d.Id(), "/") - // if err != nil { - // return flex.DiscriminatedTerraformErrorf(err, err.Error(), "ibm_pdr_managedr", "read", "sep-id-parts").GetDiag() - // } instanceID := d.Get("instance_id").(string) log.Printf("[DEBUG] Read operation using instance ID from resource: %s", instanceID) getManageDrOptions.SetInstanceID(instanceID) - // getManageDrOptions.SetInstanceID(parts[0]) - // getManageDrOptions.SetInstanceID(parts[1]) - if _, ok := d.GetOk("accept_language"); ok { - getManageDrOptions.SetAcceptLanguage(d.Get("accept_language").(string)) - } - if _, ok := d.GetOk("if_none_match"); ok { - getManageDrOptions.SetIfNoneMatch(d.Get("if_none_match").(string)) - } + // if _, ok := d.GetOk("accept_language"); ok { + // getManageDrOptions.SetAcceptLanguage(d.Get("accept_language").(string)) + // } + // if _, ok := d.GetOk("if_none_match"); ok { + // getManageDrOptions.SetIfNoneMatch(d.Get("if_none_match").(string)) + // } serviceInstanceManageDr, response, err := drAutomationServiceClient.GetManageDrWithContext(context, getManageDrOptions) if err != nil { - if response != nil && response.StatusCode == 404 { - d.SetId("") - return nil + detailedMsg := fmt.Sprintf("GetManageDrWithContext failed: %s", err.Error()) + // Include HTTP status & raw body if available + if response != nil { + detailedMsg = fmt.Sprintf( + "GetManageDrWithContext failed: %s (status: %d, response: %s)", + err.Error(), response.StatusCode, response.Result, + ) } - tfErr := flex.TerraformErrorf(err, fmt.Sprintf("GetManageDrWithContext failed: %s", err.Error()), "ibm_pdr_managedr", "read") - log.Printf("[DEBUG]\n%s", tfErr.GetDebugMessage()) + tfErr := flex.TerraformErrorf(err, detailedMsg, "ibm_pdr_managedr", "read") + log.Printf("[ERROR] %s", detailedMsg) return tfErr.GetDiag() } @@ -427,3 +506,41 @@ func resourceIbmPdrManagedrDelete(context context.Context, d *schema.ResourceDat d.SetId("") return nil } + +func checkLastOperationStatus(ctx context.Context, client *drautomationservicev1.DrAutomationServiceV1, instanceID string) (string, string, string, error, error) { + opts := &drautomationservicev1.GetLastOperationOptions{} + opts.SetInstanceID(instanceID) + + statusResponse, _, err := client.GetLastOperationWithContext(ctx, opts) + if err != nil { + return "", "", "", err, nil + } + + if statusResponse.Status == nil { + return *statusResponse.Status, "", "", fmt.Errorf("received nil status for instance %s", instanceID), nil + } + + status := strings.ToLower(*statusResponse.Status) + primaryStatus := strings.ToLower(*statusResponse.PrimaryOrchestratorStatus) + standbyStatus := strings.ToLower(*statusResponse.StandbyStatus) + + // --- Custom error logic based on your conditions --- + if status == "failed" { + switch { + case primaryStatus == "failed" && standbyStatus == "failed": + return status, primaryStatus, standbyStatus, nil, fmt.Errorf("%s \n %s", *statusResponse.PrimaryDescription, *statusResponse.StandbyDescription) + case primaryStatus == "failed" && (standbyStatus == "" || standbyStatus == "na"): + return status, primaryStatus, standbyStatus, nil, fmt.Errorf("%s", *statusResponse.PrimaryDescription) + case primaryStatus == "active" && (standbyStatus != "" || standbyStatus == "failed"): + return status, primaryStatus, standbyStatus, nil, fmt.Errorf("%s \n %s", *statusResponse.PrimaryDescription, *statusResponse.StandbyDescription) + case primaryStatus == "failed": + return status, primaryStatus, standbyStatus, nil, fmt.Errorf("primary orchestrator failed for instance %s", instanceID) + case standbyStatus == "failed": + return status, primaryStatus, standbyStatus, nil, fmt.Errorf("standby orchestrator failed for instance %s", instanceID) + default: + return status, primaryStatus, standbyStatus, nil, fmt.Errorf("operation failed for instance %s with unknown cause", instanceID) + } + } + + return *statusResponse.Status, primaryStatus, standbyStatus, nil, nil +} diff --git a/ibm/service/drautomationservice/resource_ibm_pdr_managedr_test.go b/ibm/service/drautomationservice/resource_ibm_pdr_managedr_test.go index b55e645b1b..e0a95decd0 100644 --- a/ibm/service/drautomationservice/resource_ibm_pdr_managedr_test.go +++ b/ibm/service/drautomationservice/resource_ibm_pdr_managedr_test.go @@ -6,62 +6,52 @@ package drautomationservice_test import ( "fmt" "testing" - "time" - - // "github.com/hashicorp/terraform-plugin-testing/helper/acctest" - "math/rand" + "github.com/hashicorp/terraform-plugin-testing/helper/acctest" "github.com/hashicorp/terraform-plugin-testing/helper/resource" "github.com/hashicorp/terraform-plugin-testing/terraform" - acc "github.com/IBM-Cloud/terraform-provider-ibm/ibm/acctest" "github.com/IBM-Cloud/terraform-provider-ibm/ibm/conns" "github.com/IBM-Cloud/terraform-provider-ibm/ibm/flex" "github.ibm.com/DRAutomation/dra-go-sdk/drautomationservicev1" + acc "github.com/IBM-Cloud/terraform-provider-ibm/ibm/acctest" ) -func TestAccIbmPdrManagedrBasic(t *testing.T) { +func TestAccIBMPdrManagedrBasic(t *testing.T) { var conf drautomationservicev1.ServiceInstanceManageDr - instanceID := "crn:v1:staging:public:power-dr-automation:global:a/a09202c1bfb04ceebfb4a9fd38c87721:050ebe3b-13f4-4db8-8ece-501a3c13be0965822::" - standByRedeploy := "false" + instanceID := fmt.Sprintf("tf_instance_id_%d", acctest.RandIntRange(10, 100)) resource.Test(t, resource.TestCase{ PreCheck: func() { acc.TestAccPreCheck(t) }, Providers: acc.TestAccProviders, - CheckDestroy: testAccCheckIbmPdrManagedrDestroy, Steps: []resource.TestStep{ resource.TestStep{ - Config: testAccCheckIbmPdrManagedrConfigBasic(instanceID, standByRedeploy), + Config: testAccCheckIBMPdrManagedrConfigBasic(instanceID), Check: resource.ComposeAggregateTestCheckFunc( - testAccCheckIbmPdrManagedrExists("ibm_pdr_managedr.pdr_managedr_instance", conf), + testAccCheckIBMPdrManagedrExists("ibm_pdr_managedr.pdr_managedr_instance", conf), resource.TestCheckResourceAttr("ibm_pdr_managedr.pdr_managedr_instance", "instance_id", instanceID), - resource.TestCheckResourceAttr("ibm_pdr_managedr.pdr_managedr_instance", "stand_by_redeploy", standByRedeploy), ), }, }, }) } -func TestAccIbmPdrManagedrAllArgs(t *testing.T) { +func TestAccIBMPdrManagedrAllArgs(t *testing.T) { var conf drautomationservicev1.ServiceInstanceManageDr - instanceID := "crn:v1:staging:public:power-dr-automation:global:a/a09202c1bfb04ceebfb4a9fd38c87721:050ebe3b-13f4-4db8-8ece-501a3c13be0965822::" - standByRedeploy := "false" - rand.Seed(time.Now().UnixNano()) - acceptLanguage := fmt.Sprintf("tf_accept_language_%d", rand.Intn(90)+10) - ifNoneMatch := fmt.Sprintf("tf_if_none_match_%d", rand.Intn(90)+10) - // acceptLanguage := fmt.Sprintf("tf_accept_language_%d", acc.RandIntRange(10, 100)) - // ifNoneMatch := fmt.Sprintf("tf_if_none_match_%d", acc.RandIntRange(10, 100)) + instanceID := fmt.Sprintf("tf_instance_id_%d", acctest.RandIntRange(10, 100)) + standByRedeploy := fmt.Sprintf("tf_stand_by_redeploy_%d", acctest.RandIntRange(10, 100)) + acceptLanguage := fmt.Sprintf("tf_accept_language_%d", acctest.RandIntRange(10, 100)) + ifNoneMatch := fmt.Sprintf("tf_if_none_match_%d", acctest.RandIntRange(10, 100)) acceptsIncomplete := "true" resource.Test(t, resource.TestCase{ PreCheck: func() { acc.TestAccPreCheck(t) }, Providers: acc.TestAccProviders, - CheckDestroy: testAccCheckIbmPdrManagedrDestroy, Steps: []resource.TestStep{ resource.TestStep{ - Config: testAccCheckIbmPdrManagedrConfig(instanceID, standByRedeploy, acceptLanguage, ifNoneMatch, acceptsIncomplete), + Config: testAccCheckIBMPdrManagedrConfig(instanceID, standByRedeploy, acceptLanguage, ifNoneMatch, acceptsIncomplete), Check: resource.ComposeAggregateTestCheckFunc( - testAccCheckIbmPdrManagedrExists("ibm_pdr_managedr.pdr_managedr_instance", conf), + testAccCheckIBMPdrManagedrExists("ibm_pdr_managedr.pdr_managedr_instance", conf), resource.TestCheckResourceAttr("ibm_pdr_managedr.pdr_managedr_instance", "instance_id", instanceID), resource.TestCheckResourceAttr("ibm_pdr_managedr.pdr_managedr_instance", "stand_by_redeploy", standByRedeploy), resource.TestCheckResourceAttr("ibm_pdr_managedr.pdr_managedr_instance", "accept_language", acceptLanguage), @@ -78,47 +68,15 @@ func TestAccIbmPdrManagedrAllArgs(t *testing.T) { }) } -func testAccCheckIbmPdrManagedrConfigBasic(instanceID string, standByRedeploy string) string { +func testAccCheckIBMPdrManagedrConfigBasic(instanceID string) string { return fmt.Sprintf(` resource "ibm_pdr_managedr" "pdr_managedr_instance" { - # Path / query parameters - instance_id = "%s" - stand_by_redeploy = "%s" - - # Request body parameters (from ServiceInstanceManageDRRequest) - action = "" - api_key = "" - enable_ha = false - guid = "" - location_id = "dal10" - machine_type = "s922" - orchestrator_cluster_type = "off-premises" - orchestrator_name = "vindhya_NONHAtest1232" - orchestrator_password = "vindhyaSri@123hyuuu" - orchestrator_workspace_id = "75cbf05b-78f6-406e-afe7-a904f646d798" - ssh_key_name = "vijaykey" - orchestrator_workspace_location = "" - proxy_ip = "10.30.40.4:3128" - region_id = "" - resource_instance = "crn:v1:bluemix:public:resource-controller::res123" - schematic_workspace_id = "" - secondary_workspace_id = "" - secret = "" - secret_group = "" - standby_machine_type = "s922" - standby_orchestrator_name = "drautomationstandby" - standby_orchestrator_workspace_id = "71027b79-0e31-44f6-a499-63eca1a66feb" - standby_orchestrator_workspace_location = "" - standby_schematic_workspace_id = "" - standby_tier = "tier1" - tier = "tier1" - transit_gateway_id = "024fcff9-c676-46e4-ad42-3b2d349c9f8f" - vpc_id = "r006-2f3b3ab9-2149-49cc-83a1-30a5d93d59b2" + instance_id = "%s" } - `, instanceID, standByRedeploy) + `, instanceID) } -func testAccCheckIbmPdrManagedrConfig(instanceID string, standByRedeploy string, acceptLanguage string, ifNoneMatch string, acceptsIncomplete string) string { +func testAccCheckIBMPdrManagedrConfig(instanceID string, standByRedeploy string, acceptLanguage string, ifNoneMatch string, acceptsIncomplete string) string { return fmt.Sprintf(` resource "ibm_pdr_managedr" "pdr_managedr_instance" { @@ -131,7 +89,7 @@ func testAccCheckIbmPdrManagedrConfig(instanceID string, standByRedeploy string, `, instanceID, standByRedeploy, acceptLanguage, ifNoneMatch, acceptsIncomplete) } -func testAccCheckIbmPdrManagedrExists(n string, obj drautomationservicev1.ServiceInstanceManageDr) resource.TestCheckFunc { +func testAccCheckIBMPdrManagedrExists(n string, obj drautomationservicev1.ServiceInstanceManageDr) resource.TestCheckFunc { return func(s *terraform.State) error { rs, ok := s.RootModule().Resources[n] @@ -154,17 +112,17 @@ func testAccCheckIbmPdrManagedrExists(n string, obj drautomationservicev1.Servic getManageDrOptions.SetInstanceID(parts[0]) getManageDrOptions.SetInstanceID(parts[1]) - serviceInstanceManageDR, _, err := drAutomationServiceClient.GetManageDr(getManageDrOptions) + serviceInstanceManageDr, _, err := drAutomationServiceClient.GetManageDr(getManageDrOptions) if err != nil { return err } - obj = *serviceInstanceManageDR + obj = *serviceInstanceManageDr return nil } } -func testAccCheckIbmPdrManagedrDestroy(s *terraform.State) error { +func testAccCheckIBMPdrManagedrDestroy(s *terraform.State) error { drAutomationServiceClient, err := acc.TestAccProvider.Meta().(conns.ClientSession).DrAutomationServiceV1() if err != nil { return err @@ -181,7 +139,8 @@ func testAccCheckIbmPdrManagedrDestroy(s *terraform.State) error { return err } - getManageDrOptions.SetInstanceID(fmt.Sprintf("%s/%s", parts[0], parts[1])) + getManageDrOptions.SetInstanceID(parts[0]) + getManageDrOptions.SetInstanceID(parts[1]) // Try to find the key _, response, err := drAutomationServiceClient.GetManageDr(getManageDrOptions) diff --git a/ibm/service/drautomationservice/resource_ibm_pdr_validate_apikey.go b/ibm/service/drautomationservice/resource_ibm_pdr_validate_apikey.go index b18f5cb007..944a550b49 100644 --- a/ibm/service/drautomationservice/resource_ibm_pdr_validate_apikey.go +++ b/ibm/service/drautomationservice/resource_ibm_pdr_validate_apikey.go @@ -21,19 +21,19 @@ import ( "github.ibm.com/DRAutomation/dra-go-sdk/drautomationservicev1" ) -func ResourceIbmPdrValidateApikey() *schema.Resource { +func ResourceIBMPdrValidateApikey() *schema.Resource { return &schema.Resource{ - CreateContext: resourceIbmPdrValidateApikeyCreate, - ReadContext: resourceIbmPdrValidateApikeyRead, - UpdateContext: resourceIbmPdrValidateApikeyUpdate, - DeleteContext: resourceIbmPdrValidateApikeyDelete, + CreateContext: resourceIBMPdrValidateApikeyCreate, + ReadContext: resourceIBMPdrValidateApikeyRead, + UpdateContext: resourceIBMPdrValidateApikeyUpdate, + DeleteContext: resourceIBMPdrValidateApikeyDelete, Importer: &schema.ResourceImporter{}, Schema: map[string]*schema.Schema{ "instance_id": &schema.Schema{ - Type: schema.TypeString, - Required: true, - // ForceNew: true, + Type: schema.TypeString, + Required: true, + ForceNew: true, Description: "instance id of instance to provision.", }, "accept_language": &schema.Schema{ @@ -48,11 +48,6 @@ func ResourceIbmPdrValidateApikey() *schema.Resource { Sensitive: true, Description: "api key", }, - "if_none_match": &schema.Schema{ - Type: schema.TypeString, - Optional: true, - Description: "ETag for conditional requests (optional).", - }, "description": &schema.Schema{ Type: schema.TypeString, Computed: true, @@ -76,7 +71,7 @@ func ResourceIbmPdrValidateApikey() *schema.Resource { } } -func resourceIbmPdrValidateApikeyCreate(context context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { +func resourceIBMPdrValidateApikeyCreate(context context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { drAutomationServiceClient, err := meta.(conns.ClientSession).DrAutomationServiceV1() if err != nil { tfErr := flex.DiscriminatedTerraformErrorf(err, err.Error(), "ibm_pdr_validate_apikey", "create", "initialize-client") @@ -84,34 +79,32 @@ func resourceIbmPdrValidateApikeyCreate(context context.Context, d *schema.Resou return tfErr.GetDiag() } - createServiceInstanceKeyValidationOptions := &drautomationservicev1.CreateApikeyOptions{} + createApikeyOptions := &drautomationservicev1.CreateApikeyOptions{} - createServiceInstanceKeyValidationOptions.SetInstanceID(d.Get("instance_id").(string)) - createServiceInstanceKeyValidationOptions.SetAPIKey(d.Get("api_key").(string)) - if _, ok := d.GetOk("accept_language"); ok { - createServiceInstanceKeyValidationOptions.SetAcceptLanguage(d.Get("accept_language").(string)) - } - if _, ok := d.GetOk("if_none_match"); ok { - createServiceInstanceKeyValidationOptions.SetIfNoneMatch(d.Get("if_none_match").(string)) - } + createApikeyOptions.SetInstanceID(d.Get("instance_id").(string)) + createApikeyOptions.SetAPIKey(d.Get("api_key").(string)) - validationKeyResponse, _, err := drAutomationServiceClient.Clone().CreateApikeyWithContext(context, createServiceInstanceKeyValidationOptions) + validationKeyResponse, response, err := drAutomationServiceClient.CreateApikeyWithContext(context, createApikeyOptions) if err != nil { - tfErr := flex.TerraformErrorf(err, fmt.Sprintf("CreateServiceInstanceKeyValidationWithContext failed: %s", err.Error()), "ibm_pdr_validate_apikey", "create") - log.Printf("[DEBUG]\n%s", tfErr.GetDebugMessage()) + detailedMsg := fmt.Sprintf("CreateApikeyWithContext failed: %s", err.Error()) + // Include HTTP status & raw body if available + if response != nil { + detailedMsg = fmt.Sprintf( + "CreateApikeyWithContext failed: %s (status: %d, response: %s)", + err.Error(), response.StatusCode, response.Result, + ) + } + tfErr := flex.TerraformErrorf(err, detailedMsg, "ibm_pdr_validate_apikey", "create") + log.Printf("[ERROR] %s", detailedMsg) return tfErr.GetDiag() } - d.SetId(fmt.Sprintf("%s/%s", *createServiceInstanceKeyValidationOptions.InstanceID, *validationKeyResponse.ID)) + d.SetId(fmt.Sprintf("%s/%s", *createApikeyOptions.InstanceID, *validationKeyResponse.ID)) - return resourceIbmPdrValidateApikeyRead(context, d, meta) + return resourceIBMPdrValidateApikeyRead(context, d, meta) } -func resourceIbmPdrValidateApikeyRead(context context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { - if d.Id() == "" { - return nil - } - +func resourceIBMPdrValidateApikeyRead(context context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { drAutomationServiceClient, err := meta.(conns.ClientSession).DrAutomationServiceV1() if err != nil { tfErr := flex.DiscriminatedTerraformErrorf(err, err.Error(), "ibm_pdr_validate_apikey", "read", "initialize-client") @@ -119,36 +112,31 @@ func resourceIbmPdrValidateApikeyRead(context context.Context, d *schema.Resourc return tfErr.GetDiag() } - getServiceInstanceKeyV1Options := &drautomationservicev1.GetApikeyOptions{} - - instanceID := d.Get("instance_id").(string) - - log.Printf("[DEBUG] Read operation using instance ID from resource: %s", instanceID) - - getServiceInstanceKeyV1Options.SetInstanceID(instanceID) + getApikeyOptions := &drautomationservicev1.GetApikeyOptions{} - // parts, err := flex.SepIdParts(d.Id(), "/") - // if err != nil { - // return flex.DiscriminatedTerraformErrorf(err, err.Error(), "ibm_pdr_validate_apikey", "read", "sep-id-parts").GetDiag() + getApikeyOptions.SetInstanceID(d.Get("instance_id").(string)) + // if _, ok := d.GetOk("accept_language"); ok { + // getApikeyOptions.SetAcceptLanguage(d.Get("accept_language").(string)) + // } + // if _, ok := d.GetOk("if_none_match"); ok { + // getApikeyOptions.SetIfNoneMatch(d.Get("if_none_match").(string)) // } - // getServiceInstanceKeyV1Options.SetInstanceID(parts[0]) - // getServiceInstanceKeyV1Options.SetInstanceID(parts[1]) - if _, ok := d.GetOk("accept_language"); ok { - getServiceInstanceKeyV1Options.SetAcceptLanguage(d.Get("accept_language").(string)) - } - if _, ok := d.GetOk("if_none_match"); ok { - getServiceInstanceKeyV1Options.SetIfNoneMatch(d.Get("if_none_match").(string)) - } - - validationKeyResponse, response, err := drAutomationServiceClient.GetApikeyWithContext(context, getServiceInstanceKeyV1Options) + validationKeyResponse, response, err := drAutomationServiceClient.GetApikeyWithContext(context, getApikeyOptions) if err != nil { - if response != nil && response.StatusCode == 404 { + detailedMsg := fmt.Sprintf("GetApikeyWithContext failed: %s", err.Error()) + // Include HTTP status & raw body if available + if response != nil { + detailedMsg = fmt.Sprintf( + "GetApikeyWithContext failed: %s (status: %d, response: %s)", + err.Error(), response.StatusCode, response.Result, + ) + } + if response.StatusCode == 404 { d.SetId("") - return nil } - tfErr := flex.TerraformErrorf(err, fmt.Sprintf("GetServiceInstanceKeyV1WithContext failed: %s", err.Error()), "ibm_pdr_validate_apikey", "read") - log.Printf("[DEBUG]\n%s", tfErr.GetDebugMessage()) + tfErr := flex.TerraformErrorf(err, detailedMsg, "ibm_pdr_validate_apikey", "read") + log.Printf("[ERROR] %s", detailedMsg) return tfErr.GetDiag() } @@ -177,7 +165,7 @@ func resourceIbmPdrValidateApikeyRead(context context.Context, d *schema.Resourc return nil } -func resourceIbmPdrValidateApikeyUpdate(context context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { +func resourceIBMPdrValidateApikeyUpdate(context context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { drAutomationServiceClient, err := meta.(conns.ClientSession).DrAutomationServiceV1() if err != nil { tfErr := flex.DiscriminatedTerraformErrorf(err, err.Error(), "ibm_pdr_validate_apikey", "update", "initialize-client") @@ -185,35 +173,39 @@ func resourceIbmPdrValidateApikeyUpdate(context context.Context, d *schema.Resou return tfErr.GetDiag() } - replaceServiceInstanceApiKeyOptions := &drautomationservicev1.UpdateApikeyOptions{} - - parts, err := flex.SepIdParts(d.Id(), "/") - if err != nil { - return flex.DiscriminatedTerraformErrorf(err, err.Error(), "ibm_pdr_validate_apikey", "update", "sep-id-parts").GetDiag() - } + updateApikeyOptions := &drautomationservicev1.UpdateApikeyOptions{} - replaceServiceInstanceApiKeyOptions.SetInstanceID(parts[0]) - replaceServiceInstanceApiKeyOptions.SetInstanceID(parts[1]) - replaceServiceInstanceApiKeyOptions.SetInstanceID(d.Get("instance_id").(string)) + updateApikeyOptions.SetInstanceID(d.Get("instance_id").(string)) if _, ok := d.GetOk("accept_language"); ok { - replaceServiceInstanceApiKeyOptions.SetAcceptLanguage(d.Get("accept_language").(string)) + updateApikeyOptions.SetAcceptLanguage(d.Get("accept_language").(string)) } - if _, ok := d.GetOk("if_none_match"); ok { - replaceServiceInstanceApiKeyOptions.SetIfNoneMatch(d.Get("if_none_match").(string)) - } - replaceServiceInstanceApiKeyOptions.SetAPIKey(d.Get("api_key").(string)) + // if _, ok := d.GetOk("if_none_match"); ok { + // updateApikeyOptions.SetIfNoneMatch(d.Get("if_none_match").(string)) + // } + updateApikeyOptions.SetAPIKey(d.Get("api_key").(string)) - _, _, err = drAutomationServiceClient.UpdateApikeyWithContext(context, replaceServiceInstanceApiKeyOptions) + _, response, err := drAutomationServiceClient.UpdateApikeyWithContext(context, updateApikeyOptions) if err != nil { - tfErr := flex.TerraformErrorf(err, fmt.Sprintf("ReplaceServiceInstanceApiKeyWithContext failed: %s", err.Error()), "ibm_pdr_validate_apikey", "update") - log.Printf("[DEBUG]\n%s", tfErr.GetDebugMessage()) + detailedMsg := fmt.Sprintf("UpdateApikeyWithContext failed: %s", err.Error()) + // Include HTTP status & raw body if available + if response != nil { + detailedMsg = fmt.Sprintf( + "UpdateApikeyWithContext failed: %s (status: %d, response: %s)", + err.Error(), response.StatusCode, response.Result, + ) + } + if response.StatusCode == 404 { + d.SetId("") + } + tfErr := flex.TerraformErrorf(err, detailedMsg, "ibm_pdr_validate_apikey", "update") + log.Printf("[ERROR] %s", detailedMsg) return tfErr.GetDiag() } - return resourceIbmPdrValidateApikeyRead(context, d, meta) + return resourceIBMPdrValidateApikeyRead(context, d, meta) } -func resourceIbmPdrValidateApikeyDelete(context context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { +func resourceIBMPdrValidateApikeyDelete(context context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { // This resource does not support a "delete" operation. d.SetId("") return nil diff --git a/ibm/service/drautomationservice/resource_ibm_pdr_validate_apikey_test.go b/ibm/service/drautomationservice/resource_ibm_pdr_validate_apikey_test.go index 592c07d52c..67ec0629a8 100644 --- a/ibm/service/drautomationservice/resource_ibm_pdr_validate_apikey_test.go +++ b/ibm/service/drautomationservice/resource_ibm_pdr_validate_apikey_test.go @@ -17,19 +17,19 @@ import ( "github.ibm.com/DRAutomation/dra-go-sdk/drautomationservicev1" ) -func TestAccIbmPdrValidateApikeyBasic(t *testing.T) { +func TestAccIBMPdrValidateApikeyBasic(t *testing.T) { var conf drautomationservicev1.ValidationKeyResponse - instanceID := "crn:v1:staging:public:power-dr-automation:global:a/a09202c1bfb04ceebfb4a9fd38c87721:050ebe3b-13f4-4db8-8ece-501a3c13be0965822::" + instanceID := fmt.Sprintf("tf_instance_id_%d", acctest.RandIntRange(10, 100)) resource.Test(t, resource.TestCase{ PreCheck: func() { acc.TestAccPreCheck(t) }, Providers: acc.TestAccProviders, - CheckDestroy: testAccCheckIbmPdrValidateApikeyDestroy, + CheckDestroy: testAccCheckIBMPdrValidateApikeyDestroy, Steps: []resource.TestStep{ resource.TestStep{ - Config: testAccCheckIbmPdrValidateApikeyConfigBasic(instanceID), + Config: testAccCheckIBMPdrValidateApikeyConfigBasic(instanceID), Check: resource.ComposeAggregateTestCheckFunc( - testAccCheckIbmPdrValidateApikeyExists("ibm_pdr_validate_apikey.pdr_validate_apikey_instance", conf), + testAccCheckIBMPdrValidateApikeyExists("ibm_pdr_validate_apikey.pdr_validate_apikey_instance", conf), resource.TestCheckResourceAttr("ibm_pdr_validate_apikey.pdr_validate_apikey_instance", "instance_id", instanceID), ), }, @@ -37,9 +37,9 @@ func TestAccIbmPdrValidateApikeyBasic(t *testing.T) { }) } -func TestAccIbmPdrValidateApikeyAllArgs(t *testing.T) { +func TestAccIBMPdrValidateApikeyAllArgs(t *testing.T) { var conf drautomationservicev1.ValidationKeyResponse - instanceID := "crn:v1:staging:public:power-dr-automation:global:a/a09202c1bfb04ceebfb4a9fd38c87721:050ebe3b-13f4-4db8-8ece-501a3c13be0965822::" + instanceID := fmt.Sprintf("tf_instance_id_%d", acctest.RandIntRange(10, 100)) acceptLanguage := fmt.Sprintf("tf_accept_language_%d", acctest.RandIntRange(10, 100)) ifNoneMatch := fmt.Sprintf("tf_if_none_match_%d", acctest.RandIntRange(10, 100)) acceptLanguageUpdate := fmt.Sprintf("tf_accept_language_%d", acctest.RandIntRange(10, 100)) @@ -48,19 +48,19 @@ func TestAccIbmPdrValidateApikeyAllArgs(t *testing.T) { resource.Test(t, resource.TestCase{ PreCheck: func() { acc.TestAccPreCheck(t) }, Providers: acc.TestAccProviders, - CheckDestroy: testAccCheckIbmPdrValidateApikeyDestroy, + CheckDestroy: testAccCheckIBMPdrValidateApikeyDestroy, Steps: []resource.TestStep{ resource.TestStep{ - Config: testAccCheckIbmPdrValidateApikeyConfig(instanceID, acceptLanguage, ifNoneMatch), + Config: testAccCheckIBMPdrValidateApikeyConfig(instanceID, acceptLanguage, ifNoneMatch), Check: resource.ComposeAggregateTestCheckFunc( - testAccCheckIbmPdrValidateApikeyExists("ibm_pdr_validate_apikey.pdr_validate_apikey_instance", conf), + testAccCheckIBMPdrValidateApikeyExists("ibm_pdr_validate_apikey.pdr_validate_apikey_instance", conf), resource.TestCheckResourceAttr("ibm_pdr_validate_apikey.pdr_validate_apikey_instance", "instance_id", instanceID), resource.TestCheckResourceAttr("ibm_pdr_validate_apikey.pdr_validate_apikey_instance", "accept_language", acceptLanguage), resource.TestCheckResourceAttr("ibm_pdr_validate_apikey.pdr_validate_apikey_instance", "if_none_match", ifNoneMatch), ), }, resource.TestStep{ - Config: testAccCheckIbmPdrValidateApikeyConfig(instanceID, acceptLanguageUpdate, ifNoneMatchUpdate), + Config: testAccCheckIBMPdrValidateApikeyConfig(instanceID, acceptLanguageUpdate, ifNoneMatchUpdate), Check: resource.ComposeAggregateTestCheckFunc( resource.TestCheckResourceAttr("ibm_pdr_validate_apikey.pdr_validate_apikey_instance", "instance_id", instanceID), resource.TestCheckResourceAttr("ibm_pdr_validate_apikey.pdr_validate_apikey_instance", "accept_language", acceptLanguageUpdate), @@ -76,28 +76,26 @@ func TestAccIbmPdrValidateApikeyAllArgs(t *testing.T) { }) } -func testAccCheckIbmPdrValidateApikeyConfigBasic(instanceID string) string { +func testAccCheckIBMPdrValidateApikeyConfigBasic(instanceID string) string { return fmt.Sprintf(` resource "ibm_pdr_validate_apikey" "pdr_validate_apikey_instance" { instance_id = "%s" - api_key = "sdfasfasdfasd" } `, instanceID) } -func testAccCheckIbmPdrValidateApikeyConfig(instanceID string, acceptLanguage string, ifNoneMatch string) string { +func testAccCheckIBMPdrValidateApikeyConfig(instanceID string, acceptLanguage string, ifNoneMatch string) string { return fmt.Sprintf(` resource "ibm_pdr_validate_apikey" "pdr_validate_apikey_instance" { instance_id = "%s" - api_key = "azGsdsdfTyameQEAhya_1_fD" accept_language = "%s" if_none_match = "%s" } `, instanceID, acceptLanguage, ifNoneMatch) } -func testAccCheckIbmPdrValidateApikeyExists(n string, obj drautomationservicev1.ValidationKeyResponse) resource.TestCheckFunc { +func testAccCheckIBMPdrValidateApikeyExists(n string, obj drautomationservicev1.ValidationKeyResponse) resource.TestCheckFunc { return func(s *terraform.State) error { rs, ok := s.RootModule().Resources[n] @@ -110,17 +108,17 @@ func testAccCheckIbmPdrValidateApikeyExists(n string, obj drautomationservicev1. return err } - getServiceInstanceKeyV1Options := &drautomationservicev1.GetApikeyOptions{} + getApikeyOptions := &drautomationservicev1.GetApikeyOptions{} - // parts, err := flex.SepIdParts(rs.Primary.ID, "/") - // if err != nil { - // return err - // } + parts, err := flex.SepIdParts(rs.Primary.ID, "/") + if err != nil { + return err + } - // getServiceInstanceKeyV1Options.SetInstanceID(parts[0]) - getServiceInstanceKeyV1Options.SetInstanceID(rs.Primary.ID) + getApikeyOptions.SetInstanceID(parts[0]) + getApikeyOptions.SetInstanceID(parts[1]) - validationKeyResponse, _, err := drAutomationServiceClient.GetApikey(getServiceInstanceKeyV1Options) + validationKeyResponse, _, err := drAutomationServiceClient.GetApikey(getApikeyOptions) if err != nil { return err } @@ -130,7 +128,7 @@ func testAccCheckIbmPdrValidateApikeyExists(n string, obj drautomationservicev1. } } -func testAccCheckIbmPdrValidateApikeyDestroy(s *terraform.State) error { +func testAccCheckIBMPdrValidateApikeyDestroy(s *terraform.State) error { drAutomationServiceClient, err := acc.TestAccProvider.Meta().(conns.ClientSession).DrAutomationServiceV1() if err != nil { return err @@ -140,16 +138,19 @@ func testAccCheckIbmPdrValidateApikeyDestroy(s *terraform.State) error { continue } - getServiceInstanceKeyV1Options := &drautomationservicev1.GetApikeyOptions{} + getApikeyOptions := &drautomationservicev1.GetApikeyOptions{} parts, err := flex.SepIdParts(rs.Primary.ID, "/") if err != nil { return err } - getServiceInstanceKeyV1Options.SetInstanceID(fmt.Sprintf("%s/%s", parts[0], parts[1])) + + getApikeyOptions.SetInstanceID(parts[0]) + getApikeyOptions.SetInstanceID(parts[1]) + // Try to find the key - _, response, err := drAutomationServiceClient.GetApikey(getServiceInstanceKeyV1Options) - fmt.Println(response) + _, response, err := drAutomationServiceClient.GetApikey(getApikeyOptions) + if err == nil { return fmt.Errorf("pdr_validate_apikey still exists: %s", rs.Primary.ID) } else if response.StatusCode != 404 { diff --git a/website/docs/d/pdr_get_deployment_status.html.markdown b/website/docs/d/pdr_get_deployment_status.html.markdown new file mode 100755 index 0000000000..2d48fc1b3c --- /dev/null +++ b/website/docs/d/pdr_get_deployment_status.html.markdown @@ -0,0 +1,45 @@ +--- +layout: "ibm" +page_title: "IBM : ibm_pdr_get_deployment_status" +description: |- + Get information about pdr_get_deployment_status +subcategory: "DrAutomation Service" +--- + +# ibm_pdr_get_deployment_status + +Provides a read-only data source to retrieve information about pdr_get_deployment_status. You can then reference the fields of the data source in other resources within the same configuration by using interpolation syntax. + +## Example Usage + +```hcl +data "ibm_pdr_get_deployment_status" "pdr_get_deployment_status" { + instance_id = "crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::" +} +``` + +## Argument Reference + +You can specify the following arguments for this data source. + +* `instance_id` - (Required, Forces new resource, String) instance id of instance to provision. + +## Attribute Reference + +After your data source is created, you can read values from the following attributes. + +* `id` - The unique identifier of the pdr_get_deployment_status. +* `orch_ext_connectivity_status` - (String) External connectivity status of the orchestrator cluster. +* `orch_standby_node_addition_status` - (String) Status of the standby node addition process. +* `orchestrator_cluster_message` - (String) Cluster status message. +* `orchestrator_cluster_type` - (String) Type of orchestrator cluster. +* `orchestrator_config_status` - (String) Configuration status of the orchestrator. +* `orchestrator_group_leader` - (String) Name of the orchestrator acting as the cluster leader. +* `orchestrator_name` - (String) Name of the primary orchestrator. +* `orchestrator_status` - (String) Status of the primary orchestrator. +* `schematic_workspace_name` - (String) Name of the schematic workspace. +* `schematic_workspace_status` - (String) Status of the schematic workspace. +* `ssh_key_name` - (String) Name of the SSH key associated with the orchestrator. +* `standby_orchestrator_name` - (String) Name of the standby orchestrator. +* `standby_orchestrator_status` - (String) Status of the standby orchestrator. + diff --git a/website/docs/d/pdr_get_dr_locations.html.markdown b/website/docs/d/pdr_get_dr_locations.html.markdown new file mode 100644 index 0000000000..83b441f489 --- /dev/null +++ b/website/docs/d/pdr_get_dr_locations.html.markdown @@ -0,0 +1,37 @@ +--- +layout: "ibm" +page_title: "IBM : ibm_pdr_get_dr_locations" +description: |- + Get information about pdr_get_dr_locations +subcategory: "DrAutomation Service" +--- + +# ibm_pdr_get_dr_locations + +Provides a read-only data source to retrieve information about pdr_get_dr_locations. You can then reference the fields of the data source in other resources within the same configuration by using interpolation syntax. + +## Example Usage + +```hcl +data "ibm_pdr_get_dr_locations" "pdr_get_dr_locations" { + instance_id = "crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::" +} +``` + +## Argument Reference + +You can specify the following arguments for this data source. + +* `accept_language` - (Optional, String) The language requested for the return document. +* `instance_id` - (Required, Forces new resource, String) instance id of instance to provision. + +## Attribute Reference + +After your data source is created, you can read values from the following attributes. + +* `id` - The unique identifier of the pdr_get_dr_locations. +* `dr_locations` - (List) List of disaster recovery locations available for the service. +Nested schema for **dr_locations**: + * `id` - (String) Unique identifier of the DR location. + * `name` - (String) Name of the DR location. + diff --git a/website/docs/d/pdr_get_dr_summary_response.html.markdown b/website/docs/d/pdr_get_dr_summary_response.html.markdown new file mode 100755 index 0000000000..7a9771a664 --- /dev/null +++ b/website/docs/d/pdr_get_dr_summary_response.html.markdown @@ -0,0 +1,75 @@ +--- +layout: "ibm" +page_title: "IBM : ibm_pdr_get_dr_summary_response" +description: |- + Get information about pdr_get_dr_summary_response +subcategory: "DrAutomation Service" +--- + +# ibm_pdr_get_dr_summary_response + +Provides a read-only data source to retrieve information about a pdr_get_dr_summary_response. You can then reference the fields of the data source in other resources within the same configuration by using interpolation syntax. + +## Example Usage + +```hcl +data "ibm_pdr_get_dr_summary_response" "pdr_get_dr_summary_response" { + instance_id = "crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::" +} +``` + +## Argument Reference + +You can specify the following arguments for this data source. + +* `accept_language` - (Optional, String) The language requested for the return document. +* `instance_id` - (Required, Forces new resource, String) instance id of instance to provision. + +## Attribute Reference + +After your data source is created, you can read values from the following attributes. + +* `id` - The unique identifier of the pdr_get_dr_summary_response. +* `managed_vm_list` - (Map) A flexible schema placeholder to allow any JSON value (aligns with interface{} in Go). +* `orchestrator_details` - (List) Contains details about the orchestrator configuration. +Nested schema for **orchestrator_details**: + * `last_updated_orchestrator_deployment_time` - (String) Deployment time of primary orchestrator VM. + * `last_updated_standby_orchestrator_deployment_time` - (String) Deployment time of StandBy orchestrator VM. + * `latest_orchestrator_time` - (String) Latest Orchestrator Time in COS. + * `location_id` - (String) Location identifier. + * `mfa_enabled` - (String) Multi Factor Authentication Enabled or not. + * `orch_ext_connectivity_status` - (String) External connectivity status of the orchestrator. + * `orch_standby_node_addition_status` - (String) Status of standby node addition. + * `orchestrator_cluster_message` - (String) Message regarding orchestrator cluster status. + * `orchestrator_config_status` - (String) Configuration status of the orchestrator. + * `orchestrator_group_leader` - (String) Leader node of the orchestrator group. + * `orchestrator_location_type` - (String) Type of orchestrator Location. + * `orchestrator_name` - (String) Name of the primary orchestrator. + * `orchestrator_status` - (String) Status of the primary orchestrator. + * `orchestrator_workspace_name` - (String) Name of the orchestrator workspace. + * `proxy_ip` - (String) IP address of the proxy. + * `schematic_workspace_name` - (String) Name of the schematic workspace. + * `schematic_workspace_status` - (String) Status of the schematic workspace. + * `ssh_key_name` - (String) SSH key name used for the orchestrator. + * `standby_orchestrator_name` - (String) Name of the standby orchestrator. + * `standby_orchestrator_status` - (String) Status of the standby orchestrator. + * `standby_orchestrator_workspace_name` - (String) Name of the standby orchestrator workspace. + * `transit_gateway_name` - (String) Name of the transit gateway. + * `vpc_name` - (String) Name of the VPC. +* `service_details` - (List) Contains details about the DR automation service. +Nested schema for **service_details**: + * `crn` - (String) Cloud Resource Name identifier. + * `deployment_name` - (String) Name of the deployment. + * `description` - (String) Description of the primary service. + * `is_ksys_ha` - (Boolean) Flag indicating if KSYS HA is enabled. + * `plan_name` - (String) plan name. + * `primary_ip_address` - (String) IP address of the primary service. + * `primary_orchestrator_dashboard_url` - (String) Primary Orchestrator Dashboard URL. + * `recovery_location` - (String) Location for disaster recovery. + * `resource_group` - (String) Resource group name. + * `standby_description` - (String) Description of the standby service. + * `standby_ip_address` - (String) IP address of the standby service. + * `standby_orchestrator_dashboard_url` - (String) Standby Orchestrator Dashboard URL. + * `standby_status` - (String) Current status of the standby service. + * `status` - (String) Current status of the primary service. + diff --git a/website/docs/d/pdr_get_event.html.markdown b/website/docs/d/pdr_get_event.html.markdown new file mode 100755 index 0000000000..c9fdc20168 --- /dev/null +++ b/website/docs/d/pdr_get_event.html.markdown @@ -0,0 +1,50 @@ +--- +layout: "ibm" +page_title: "IBM : ibm_pdr_get_event" +description: |- + Get information about pdr_get_event +subcategory: "DrAutomation Service" +--- + +# ibm_pdr_get_event + +Provides a read-only data source to retrieve information about a pdr_get_event. You can then reference the fields of the data source in other resources within the same configuration by using interpolation syntax. + +## Example Usage + +```hcl +data "ibm_pdr_get_event" "pdr_get_event" { + event_id = "00116b2a-9326-4024-839e-fb5364b76898" + provision_id = "crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::" +} +``` + +## Argument Reference + +You can specify the following arguments for this data source. + +* `accept_language` - (Optional, String) The language requested for the return document. +* `event_id` - (Required, Forces new resource, String) Event ID. +* `provision_id` - (Required, Forces new resource, String) provision id. + +## Attribute Reference + +After your data source is created, you can read values from the following attributes. + +* `id` - The unique identifier of the pdr_get_event. +* `action` - (String) Type of action for this event. +* `api_source` - (String) Source of API when it being executed. +* `level` - (String) Level of the event (notice, info, warning, error). + * Constraints: Allowable values are: `notice`, `info`, `warning`, `error`. +* `message` - (String) The (translated) message of the event. +* `message_data` - (Map) A flexible schema placeholder to allow any JSON value (aligns with interface{} in Go). +* `metadata` - (Map) A flexible schema placeholder to allow any JSON value (aligns with interface{} in Go). +* `resource` - (String) Type of resource for this event. +* `time` - (String) Time of activity in ISO 8601 - RFC3339. +* `timestamp` - (String) Time of activity in unix epoch. +* `user` - (List) Information about a user associated with an event. +Nested schema for **user**: + * `email` - (String) Email of the User. + * `name` - (String) Name of the User. + * `user_id` - (String) ID of user who created/caused the event. + diff --git a/website/docs/d/pdr_get_events.html.markdown b/website/docs/d/pdr_get_events.html.markdown new file mode 100755 index 0000000000..151468a0eb --- /dev/null +++ b/website/docs/d/pdr_get_events.html.markdown @@ -0,0 +1,57 @@ +--- +layout: "ibm" +page_title: "IBM : ibm_pdr_get_events" +description: |- + Get information about pdr_get_events +subcategory: "DrAutomation Service" +--- + +# ibm_pdr_get_events + +Provides a read-only data source to retrieve information about pdr_get_events. You can then reference the fields of the data source in other resources within the same configuration by using interpolation syntax. + +## Example Usage + +```hcl +data "ibm_pdr_get_events" "pdr_get_events" { + from_time = "2025-06-19T00:00:00Z" + provision_id = "crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::" + time = "2025-06-19T23:59:59Z" + to_time = "2025-06-19T23:59:59Z" +} +``` + +## Argument Reference + +You can specify the following arguments for this data source. + +* `accept_language` - (Optional, String) The language requested for the return document. +* `from_time` - (Optional, String) A from query time in either ISO 8601 or unix epoch format. +* `provision_id` - (Required, Forces new resource, String) provision id. +* `time` - (Optional, String) (deprecated - use from_time) A time in either ISO 8601 or unix epoch format. +* `to_time` - (Optional, String) A to query time in either ISO 8601 or unix epoch format. + +## Attribute Reference + +After your data source is created, you can read values from the following attributes. + +* `id` - The unique identifier of the pdr_get_events. +* `event` - (List) Events. +Nested schema for **event**: + * `action` - (String) Type of action for this event. + * `api_source` - (String) Source of API when it being executed. + * `event_id` - (String) ID of the Activity. + * `level` - (String) Level of the event (notice, info, warning, error). + * Constraints: Allowable values are: `notice`, `info`, `warning`, `error`. + * `message` - (String) The (translated) message of the event. + * `message_data` - (Map) A flexible schema placeholder to allow any JSON value (aligns with interface{} in Go). + * `metadata` - (Map) A flexible schema placeholder to allow any JSON value (aligns with interface{} in Go). + * `resource` - (String) Type of resource for this event. + * `time` - (String) Time of activity in ISO 8601 - RFC3339. + * `timestamp` - (String) Time of activity in unix epoch. + * `user` - (List) Information about a user associated with an event. + Nested schema for **user**: + * `email` - (String) Email of the User. + * `name` - (String) Name of the User. + * `user_id` - (String) ID of user who created/caused the event. + diff --git a/website/docs/d/pdr_get_grs_location_pairs.html.markdown b/website/docs/d/pdr_get_grs_location_pairs.html.markdown new file mode 100644 index 0000000000..e74c092a83 --- /dev/null +++ b/website/docs/d/pdr_get_grs_location_pairs.html.markdown @@ -0,0 +1,34 @@ +--- +layout: "ibm" +page_title: "IBM : ibm_pdr_get_grs_location_pairs" +description: |- + Get information about pdr_get_grs_location_pairs +subcategory: "DrAutomation Service" +--- + +# ibm_pdr_get_grs_location_pairs + +Provides a read-only data source to retrieve information about pdr_get_grs_location_pairs. You can then reference the fields of the data source in other resources within the same configuration by using interpolation syntax. + +## Example Usage + +```hcl +data "ibm_pdr_get_grs_location_pairs" "pdr_get_grs_location_pairs" { + instance_id = "crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::" +} +``` + +## Argument Reference + +You can specify the following arguments for this data source. + +* `accept_language` - (Optional, String) The language requested for the return document. +* `instance_id` - (Required, Forces new resource, String) instance id of instance to provision. + +## Attribute Reference + +After your data source is created, you can read values from the following attributes. + +* `id` - The unique identifier of the pdr_get_grs_location_pairs. +* `location_pairs` - (Map) A map of GRS location pairs where each key is a primary location and the value is its paired location. + diff --git a/website/docs/d/pdr_get_machine_types.html.markdown b/website/docs/d/pdr_get_machine_types.html.markdown new file mode 100755 index 0000000000..7d389ccadb --- /dev/null +++ b/website/docs/d/pdr_get_machine_types.html.markdown @@ -0,0 +1,38 @@ +--- +layout: "ibm" +page_title: "IBM : ibm_pdr_get_machine_types" +description: |- + Get information about pdr_get_machine_types +subcategory: "DrAutomation Service" +--- + +# ibm_pdr_get_machine_types + +Provides a read-only data source to retrieve information about pdr_get_machine_types. You can then reference the fields of the data source in other resources within the same configuration by using interpolation syntax. + +## Example Usage + +```hcl +data "ibm_pdr_get_machine_types" "pdr_get_machine_types" { + instance_id = "crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::" + primary_workspace_name = "Test-workspace-wdc06" + standby_workspace_name = "Test-workspace-wdc07" +} +``` + +## Argument Reference + +You can specify the following arguments for this data source. + +* `accept_language` - (Optional, String) The language requested for the return document. +* `instance_id` - (Required, Forces new resource, String) instance id of instance to provision. +* `primary_workspace_name` - (Required, String) Primary Workspace Name. +* `standby_workspace_name` - (Optional, String) Standby Workspace Name. + +## Attribute Reference + +After your data source is created, you can read values from the following attributes. + +* `id` - The unique identifier of the pdr_get_machine_types. +* `workspaces` - (Map) Map of workspace IDs to lists of machine types. + diff --git a/website/docs/d/pdr_get_managed_vm_list.html.markdown b/website/docs/d/pdr_get_managed_vm_list.html.markdown new file mode 100755 index 0000000000..364540d90c --- /dev/null +++ b/website/docs/d/pdr_get_managed_vm_list.html.markdown @@ -0,0 +1,34 @@ +--- +layout: "ibm" +page_title: "IBM : ibm_pdr_get_managed_vm_list" +description: |- + Get information about pdr_get_managed_vm_list +subcategory: "DrAutomation Service" +--- + +# ibm_pdr_get_managed_vm_list + +Provides a read-only data source to retrieve information about a pdr_get_managed_vm_list. You can then reference the fields of the data source in other resources within the same configuration by using interpolation syntax. + +## Example Usage + +```hcl +data "ibm_pdr_get_managed_vm_list" "pdr_get_managed_vm_list" { + instance_id = "crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::" +} +``` + +## Argument Reference + +You can specify the following arguments for this data source. + +* `accept_language` - (Optional, String) The language requested for the return document. +* `instance_id` - (Required, Forces new resource, String) instance id of instance to provision. + +## Attribute Reference + +After your data source is created, you can read values from the following attributes. + +* `id` - The unique identifier of the pdr_get_managed_vm_list. +* `managed_vms` - (Map) A map where the key is the VM ID and the value is the corresponding ManagedVmDetails object. + diff --git a/website/docs/d/pdr_get_powervs_workspace.html.markdown b/website/docs/d/pdr_get_powervs_workspace.html.markdown new file mode 100644 index 0000000000..d990f8782c --- /dev/null +++ b/website/docs/d/pdr_get_powervs_workspace.html.markdown @@ -0,0 +1,63 @@ +--- +layout: "ibm" +page_title: "IBM : ibm_pdr_get_powervs_workspace" +description: |- + Get information about pdr_get_powervs_workspace +subcategory: "DrAutomation Service" +--- + +# ibm_pdr_get_powervs_workspace + +Provides a read-only data source to retrieve information about a pdr_get_powervs_workspace. You can then reference the fields of the data source in other resources within the same configuration by using interpolation syntax. + +## Example Usage + +```hcl +data "ibm_pdr_get_powervs_workspace" "pdr_get_powervs_workspace" { + instance_id = "crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::" + location_id = "location_id" +} +``` + +## Argument Reference + +You can specify the following arguments for this data source. + +* `instance_id` - (Required, Forces new resource, String) instance id of instance to provision. +* `location_id` - (Required, String) Location ID value. + +## Attribute Reference + +After your data source is created, you can read values from the following attributes. + +* `id` - The unique identifier of the pdr_get_powervs_workspace. +* `dr_standby_workspace_description` - (String) Description of Standby Workspace. +* `dr_standby_workspaces` - (List) List of standby disaster recovery workspaces. +Nested schema for **dr_standby_workspaces**: + * `details` - (List) Detailed information of the standby DR workspace. + Nested schema for **details**: + * `crn` - (String) Cloud Resource Name (CRN) of the DR workspace. + * `id` - (String) Unique identifier of the standby workspace. + * `location` - (List) Location information of the standby workspace. + Nested schema for **location**: + * `region` - (String) The region identifier of the DR location. + * `type` - (String) The type of location (e.g., data-center, cloud-region). + * `url` - (String) The URL endpoint to access the DR location. + * `name` - (String) Name of the standby workspace. + * `status` - (String) Current status of the standby workspace. +* `dr_workspace_description` - (String) Description of Workspace. +* `dr_workspaces` - (List) List of primary disaster recovery workspaces. +Nested schema for **dr_workspaces**: + * `default` - (Boolean) Indicates if this is the default DR workspace. + * `details` - (List) Detailed information about the DR workspace. + Nested schema for **details**: + * `crn` - (String) Cloud Resource Name (CRN) of the DR workspace. + * `id` - (String) Unique identifier of the DR workspace. + * `location` - (List) Location information of the DR workspace. + Nested schema for **location**: + * `region` - (String) The region identifier of the DR location. + * `type` - (String) The type of location (e.g., data-center, cloud-region). + * `url` - (String) The URL endpoint to access the DR location. + * `name` - (String) Name of the DR workspace. + * `status` - (String) Current status of the DR workspace. + diff --git a/website/docs/d/pdr_last_operation.html.markdown b/website/docs/d/pdr_last_operation.html.markdown new file mode 100755 index 0000000000..ea6bdc2cbb --- /dev/null +++ b/website/docs/d/pdr_last_operation.html.markdown @@ -0,0 +1,53 @@ +--- +layout: "ibm" +page_title: "IBM : ibm_pdr_last_operation" +description: |- + Get information about pdr_last_operation +subcategory: "DrAutomation Service" +--- + +# ibm_pdr_last_operation + +Provides a read-only data source to retrieve information about a pdr_last_operation. You can then reference the fields of the data source in other resources within the same configuration by using interpolation syntax. + +## Example Usage + +```hcl +data "ibm_pdr_last_operation" "pdr_last_operation" { + instance_id = "crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::" +} +``` + +## Argument Reference + +You can specify the following arguments for this data source. + +* `accept_language` - (Optional, String) The language requested for the return document. +* `instance_id` - (Required, Forces new resource, String) instance id of instance to provision. + +## Attribute Reference + +After your data source is created, you can read values from the following attributes. + +* `id` - The unique identifier of the pdr_last_operation. +* `crn` - (String) Cloud Resource Name (CRN) of the service instance. +* `deployment_name` - (String) Name of the service instance deployment. +* `is_ksys_ha` - (Boolean) Indicates whether high availability (HA) is enabled for the orchestrator. +* `last_updated_orchestrator_deployment_time` - (String) Deployment time of primary orchestrator VM. +* `last_updated_standby_orchestrator_deployment_time` - (String) Deployment time of StandBy orchestrator VM. +* `mfa_enabled` - (String) Multiple Factor Authentication Enabled or not. +* `orch_ext_connectivity_status` - (String) Status of standby node addition to the orchestrator cluster. +* `orch_standby_node_addtion_status` - (String) Health or informational message about the orchestrator cluster. +* `orchestrator_cluster_message` - (String) Current status of the primary orchestrator VM. +* `orchestrator_config_status` - (String) Configuration status of the orchestrator cluster. +* `plan_name` - (String) Name of the Plan. +* `primary_description` - (String) Detailed status message for the primary orchestrator VM. +* `primary_ip_address` - (String) IP address of the primary orchestrator VM. +* `primary_orchestrator_status` - (String) Configuration status of the orchestrator cluster. +* `recovery_location` - (String) Disaster recovery location associated with the instance. +* `resource_group` - (String) Resource group to which the service instance belongs. +* `standby_description` - (String) Detailed status message for the standby orchestrator VM. +* `standby_ip_address` - (String) IP address of the standby orchestrator VM. +* `standby_status` - (String) Current state of the standby orchestrator VM. +* `status` - (String) Overall status of the service instance. + diff --git a/website/docs/d/pdr_schematic_workspaces.html.markdown b/website/docs/d/pdr_schematic_workspaces.html.markdown new file mode 100644 index 0000000000..d3306a3f1e --- /dev/null +++ b/website/docs/d/pdr_schematic_workspaces.html.markdown @@ -0,0 +1,45 @@ +--- +layout: "ibm" +page_title: "IBM : ibm_pdr_schematic_workspaces" +description: |- + Get information about pdr_schematic_workspaces +subcategory: "DrAutomation Service" +--- + +# ibm_pdr_schematic_workspaces + +Provides a read-only data source to retrieve information about pdr_schematic_workspaces. You can then reference the fields of the data source in other resources within the same configuration by using interpolation syntax. + +## Example Usage + +```hcl +data "ibm_pdr_schematic_workspaces" "pdr_schematic_workspaces" { + instance_id = "crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::" +} +``` + +## Argument Reference + +You can specify the following arguments for this data source. + +* `instance_id` - (Required, Forces new resource, String) instance id of instance to provision. + +## Attribute Reference + +After your data source is created, you can read values from the following attributes. + +* `id` - The unique identifier of the pdr_schematic_workspaces. +* `workspaces` - (List) List of Schematics workspaces associated with the DR automation service instance. +Nested schema for **workspaces**: + * `catalog_ref` - (List) Reference to a catalog item associated with the DR automation workspace. + Nested schema for **catalog_ref**: + * `item_name` - (String) Name of the catalog item that defines the resource or configuration. + * `created_at` - (String) Timestamp when the Schematics workspace was created, in ISO 8601 format (UTC). + * `created_by` - (String) CRN of the user or service that created the Schematics workspace. + * `crn` - (String) Cloud Resource Name (CRN) of the Schematics workspace. + * `description` - (String) Detailed description of the Schematics workspace. + * `id` - (String) Unique identifier of the Schematics workspace. + * `location` - (String) Region where the Schematics workspace is hosted. + * `name` - (String) Human-readable name of the Schematics workspace. + * `status` - (String) Current lifecycle status of the Schematics workspace. + diff --git a/website/docs/d/pdr_validate_clustertype.html.markdown b/website/docs/d/pdr_validate_clustertype.html.markdown new file mode 100755 index 0000000000..4c53cc122f --- /dev/null +++ b/website/docs/d/pdr_validate_clustertype.html.markdown @@ -0,0 +1,37 @@ +--- +layout: "ibm" +page_title: "IBM : ibm_pdr_validate_clustertype" +description: |- + Get information about pdr_validate_clustertype +subcategory: "DrAutomation Service" +--- + +# ibm_pdr_validate_clustertype + +Provides a read-only data source to retrieve information about a pdr_validate_clustertype. You can then reference the fields of the data source in other resources within the same configuration by using interpolation syntax. + +## Example Usage + +```hcl +data "ibm_pdr_validate_clustertype" "pdr_validate_clustertype" { + instance_id = "crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::" + orchestrator_cluster_type = "on-premises" +} +``` + +## Argument Reference + +You can specify the following arguments for this data source. + +* `accept_language` - (Optional, String) The language requested for the return document. +* `instance_id` - (Required, Forces new resource, String) instance id of instance to provision. +* `orchestrator_cluster_type` - (Required, String) orchestrator cluster type value. + +## Attribute Reference + +After your data source is created, you can read values from the following attributes. + +* `id` - The unique identifier of the pdr_validate_clustertype. +* `description` - (String) Human-readable message explaining the cluster type validation result. +* `status` - (String) Status of the cluster type validation (for example, valid, invalid, or error). + diff --git a/website/docs/d/pdr_validate_proxyip.html.markdown b/website/docs/d/pdr_validate_proxyip.html.markdown new file mode 100755 index 0000000000..c1d6e6cad8 --- /dev/null +++ b/website/docs/d/pdr_validate_proxyip.html.markdown @@ -0,0 +1,42 @@ +--- +layout: "ibm" +page_title: "IBM : ibm_pdr_validate_proxyip" +description: |- + Get information about pdr_validate_proxyip +subcategory: "DrAutomation Service" +--- + +# ibm_pdr_validate_proxyip + +Provides a read-only data source to retrieve information about a pdr_validate_proxyip. You can then reference the fields of the data source in other resources within the same configuration by using interpolation syntax. + +## Example Usage + +```hcl +data "ibm_pdr_validate_proxyip" "pdr_validate_proxyip" { + instance_id = "crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::" + proxyip = "10.30.40.5:3128" + vpc_id = "r006-2f3b3ab9-2149-49cc-83a1-30a5d93d59b2" + vpc_location = "us-south" +} +``` + +## Argument Reference + +You can specify the following arguments for this data source. + +* `instance_id` - (Required, Forces new resource, String) instance id of instance to provision. +* `proxyip` - (Required, String) proxyip value. +* `vpc_id` - (Required, String) vpc id value. +* `vpc_location` - (Required, String) vpc location value. + +## Attribute Reference + +After your data source is created, you can read values from the following attributes. + +* `id` - The unique identifier of the pdr_validate_proxyip. +* `description` - (String) Human-readable message explaining the proxy IP validation result. +* `status` - (String) Status of the proxy IP validation (for example, valid, invalid, or error). +* `warning` - (Boolean) Indicates whether the proxy IP is valid but has an advisory (e.g., not in reserved IPs). + * Constraints: The default value is `false`. + diff --git a/website/docs/d/pdr_validate_workspace.html.markdown b/website/docs/d/pdr_validate_workspace.html.markdown new file mode 100755 index 0000000000..2e944e5249 --- /dev/null +++ b/website/docs/d/pdr_validate_workspace.html.markdown @@ -0,0 +1,40 @@ +--- +layout: "ibm" +page_title: "IBM : ibm_pdr_validate_workspace" +description: |- + Get information about pdr_validate_workspace +subcategory: "DrAutomation Service" +--- + +# ibm_pdr_validate_workspace + +Provides a read-only data source to retrieve information about a pdr_validate_workspace. You can then reference the fields of the data source in other resources within the same configuration by using interpolation syntax. + +## Example Usage + +```hcl +data "ibm_pdr_validate_workspace" "pdr_validate_workspace" { + crn = "crn:v1:bluemix:public:power-iaas:dal10:a/094f4214c75941f991da601b001df1fe:75cbf05b-78f6-406e-afe7-a904f646d798::" + instance_id = "crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::" + location_url = "https://us-south.power-iaas.cloud.ibm.com" + workspace_id = "75cbf05b-78f6-406e-afe7-a904f646d798" +} +``` + +## Argument Reference + +You can specify the following arguments for this data source. + +* `crn` - (Required, String) crn value. +* `instance_id` - (Required, Forces new resource, String) instance id of instance to provision. +* `location_url` - (Required, String) schematic_workspace_id value. +* `workspace_id` - (Required, String) standBy workspaceID value. + +## Attribute Reference + +After your data source is created, you can read values from the following attributes. + +* `id` - The unique identifier of the pdr_validate_workspace. +* `description` - (String) Human-readable message describing the validation result. +* `status` - (String) Status of the workspace validation (for example, Valid, Invalid, or Pending). + diff --git a/website/docs/d/pdr_workspace_custom_vpc.html.markdown b/website/docs/d/pdr_workspace_custom_vpc.html.markdown new file mode 100644 index 0000000000..a2a92af91d --- /dev/null +++ b/website/docs/d/pdr_workspace_custom_vpc.html.markdown @@ -0,0 +1,66 @@ +--- +layout: "ibm" +page_title: "IBM : ibm_pdr_workspace_custom_vpc" +description: |- + Get information about pdr_workspace_custom_vpc +subcategory: "DrAutomation Service" +--- + +# ibm_pdr_workspace_custom_vpc + +Provides a read-only data source to retrieve information about a pdr_workspace_custom_vpc. You can then reference the fields of the data source in other resources within the same configuration by using interpolation syntax. + +## Example Usage + +```hcl +data "ibm_pdr_workspace_custom_vpc" "pdr_workspace_custom_vpc" { + instance_id = "crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::" + location_id = "location_id" + tg_id = "925a7b81-a826-4d0a-8ef9-7496e9dc58bc" + vpc_id = "r006-2f3b3ab9-2149-49cc-83a1-30a5d93d59b2" +} +``` + +## Argument Reference + +You can specify the following arguments for this data source. + + +* `instance_id` - (Required, Forces new resource, String) instance id of instance to provision. +* `location_id` - (Required, String) Location ID value. +* `tg_id` - (Required, String) transit gateway id value. +* `vpc_id` - (Required, String) vpc id value. + +## Attribute Reference + +After your data source is created, you can read values from the following attributes. + +* `id` - The unique identifier of the pdr_workspace_custom_vpc. +* `dr_standby_workspaces` - (List) List of standby disaster recovery workspaces. +Nested schema for **dr_standby_workspaces**: + * `details` - (List) Detailed information of the standby DR workspace. + Nested schema for **details**: + * `crn` - (String) Cloud Resource Name (CRN) of the DR workspace. + * `id` - (String) Unique identifier of the standby workspace. + * `location` - (List) Location information of the standby workspace. + Nested schema for **location**: + * `region` - (String) The region identifier of the DR location. + * `type` - (String) The type of location (e.g., data-center, cloud-region). + * `url` - (String) The URL endpoint to access the DR location. + * `name` - (String) Name of the standby workspace. + * `status` - (String) Current status of the standby workspace. +* `dr_workspaces` - (List) List of primary disaster recovery workspaces. +Nested schema for **dr_workspaces**: + * `default` - (Boolean) Indicates if this is the default DR workspace. + * `details` - (List) Detailed information about the DR workspace. + Nested schema for **details**: + * `crn` - (String) Cloud Resource Name (CRN) of the DR workspace. + * `id` - (String) Unique identifier of the DR workspace. + * `location` - (List) Location information of the DR workspace. + Nested schema for **location**: + * `region` - (String) The region identifier of the DR location. + * `type` - (String) The type of location (e.g., data-center, cloud-region). + * `url` - (String) The URL endpoint to access the DR location. + * `name` - (String) Name of the DR workspace. + * `status` - (String) Current status of the DR workspace. + diff --git a/website/docs/d/pdr_workspace_schematic.html.markdown b/website/docs/d/pdr_workspace_schematic.html.markdown new file mode 100644 index 0000000000..731c62bd76 --- /dev/null +++ b/website/docs/d/pdr_workspace_schematic.html.markdown @@ -0,0 +1,65 @@ +--- +layout: "ibm" +page_title: "IBM : ibm_pdr_workspace_schematic" +description: |- + Get information about pdr_workspace_schematic +subcategory: "DrAutomation Service" +--- + +# ibm_pdr_workspace_schematic + +Provides a read-only data source to retrieve information about a pdr_workspace_schematic. You can then reference the fields of the data source in other resources within the same configuration by using interpolation syntax. + +## Example Usage + +```hcl +data "ibm_pdr_workspace_schematic" "pdr_workspace_schematic" { + instance_id = "crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::" + location_id = "location_id" + schematic_id = "us-south.workspace.projects-service.3ae96a02" +} +``` + +## Argument Reference + +You can specify the following arguments for this data source. + +* `instance_id` - (Required, Forces new resource, String) instance id of instance to provision. +* `location_id` - (Required, String) Location ID value. +* `schematic_id` - (Required, String) Schematic ID value. + +## Attribute Reference + +After your data source is created, you can read values from the following attributes. + +* `id` - The unique identifier of the pdr_workspace_schematic. +* `dr_standby_workspace_description` - (String) Description of Standby Workspace. +* `dr_standby_workspaces` - (List) List of standby disaster recovery workspaces. +Nested schema for **dr_standby_workspaces**: + * `details` - (List) Detailed information of the standby DR workspace. + Nested schema for **details**: + * `crn` - (String) Cloud Resource Name (CRN) of the DR workspace. + * `id` - (String) Unique identifier of the standby workspace. + * `location` - (List) Location information of the standby workspace. + Nested schema for **location**: + * `region` - (String) The region identifier of the DR location. + * `type` - (String) The type of location (e.g., data-center, cloud-region). + * `url` - (String) The URL endpoint to access the DR location. + * `name` - (String) Name of the standby workspace. + * `status` - (String) Current status of the standby workspace. +* `dr_workspace_description` - (String) Description of Workspace. +* `dr_workspaces` - (List) List of primary disaster recovery workspaces. +Nested schema for **dr_workspaces**: + * `default` - (Boolean) Indicates if this is the default DR workspace. + * `details` - (List) Detailed information about the DR workspace. + Nested schema for **details**: + * `crn` - (String) Cloud Resource Name (CRN) of the DR workspace. + * `id` - (String) Unique identifier of the DR workspace. + * `location` - (List) Location information of the DR workspace. + Nested schema for **location**: + * `region` - (String) The region identifier of the DR location. + * `type` - (String) The type of location (e.g., data-center, cloud-region). + * `url` - (String) The URL endpoint to access the DR location. + * `name` - (String) Name of the DR workspace. + * `status` - (String) Current status of the DR workspace. + diff --git a/website/docs/r/pdr_managedr.html.markdown b/website/docs/r/pdr_managedr.html.markdown new file mode 100755 index 0000000000..bdfcbc28ec --- /dev/null +++ b/website/docs/r/pdr_managedr.html.markdown @@ -0,0 +1,240 @@ +--- +layout: "ibm" +page_title: "IBM : ibm_pdr_managedr" +description: |- + Manages pdr_managedr. +subcategory: "DrAutomation Service" +--- + +# ibm_pdr_managedr + +Create, update, and delete pdr_managedrs with this resource. + +## Example Usage + +```hcl +resource "ibm_pdr_managedr" "pdr_managedr_instance" { + instance_id = "crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::" +} +``` + +## Argument Reference + +You can specify the following arguments for this resource. + +* `accept_language` - (Optional, Forces new resource, String) The language requested for the return document. +* `accepts_incomplete` - (Optional, Forces new resource, Boolean) A value of true indicates that both the IBM Cloud platform and the requesting client support asynchronous deprovisioning. + * Constraints: The default value is `true`. +* `instance_id` - (Required, Forces new resource, String) instance id of instance to provision. +* `stand_by_redeploy` - (Optional, Forces new resource, String) Flag to indicate if standby should be redeployed (must be "true" or "false"). + +## Attribute Reference + +After your resource is created, you can read values from the listed arguments and the following attributes. + +* `id` - The unique identifier of the pdr_managedr. +* `dashboard_url` - (String) URL to the dashboard for managing the DR service instance in IBM Cloud. +* `instance_id` - (String) The CRN (Cloud Resource Name) of the DR service instance. + +* `etag` - ETag identifier for pdr_managedr. + +## Import + +You can import the `ibm_pdr_managedr` resource by using `id`. +The `id` property can be formed from `instance_id`, and `instance_id` in the following format: + +
+<instance_id>/<instance_id>
+
+* `instance_id`: A string in the format `crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::`. instance id of instance to provision. +* `instance_id`: A string in the format `crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::`. The CRN (Cloud Resource Name) of the DR service instance. + +# Syntax +
+$ terraform import ibm_pdr_managedr.pdr_managedr <instance_id>/<instance_id>
+
+ + + +# ================================================================================================== + # HA Cases +# ================================================================================================== +# Case 1: ManageDR with HA + schematic id + sshkey +# provider "ibm" { +# region = "us-south" +# } + +# resource "ibm_power_vs_ssh_key" "vijaykey" { +# name = "vijaykey" +# public_key = file("~/.ssh/id_rsa.pub") +# } + +# resource "ibm_drautomation_service_instance" "ha_dr_instance" { + # name = "service1234" + # crn = "crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf7::" + # enable_flag = false + # dr_location_id = "dal10" + # dr_orchestrator_name = "drautomationprimary7a" + # dr_orchestrator_password = "Password1234567" + # dr_orchestrator_workspace_id = "75cbf05b-78f6-406e-afe7-a904f646d798" + # machine_type = "s922" + # orchestrator_cluster_type = "off-premises" + # schematic_workspace_id = "us-south.workspace.projects-service.3ae96a02" + # ssh_key_name = ibm_power_vs_ssh_key.vijaykey.name + # standby_machine_type = "s922" + # standby_orchestrator_name = "drautomationstandby7a" + # standby_orchestrator_workspace_id = "71027b79-0e31-44f6-a499-63eca1a66feb" + # tier = "tier1" +# } + +# ================================================================================================ + +# Case 2: ManageDR with HA + custom VPC + sshkey + +# resource "ibm_drautomation_service_instance" "ha_dr_instance" { + # name = "service1234" + # crn = "crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf7::" + # enable_flag = false + # dr_location_id = "dal10" + # dr_orchestrator_name = "drautomationprimary7a" + # dr_orchestrator_password = "Password1234567" + # dr_orchestrator_workspace_id = "75cbf05904f646d798" + # machine_type = "s922" + # orchestrator_cluster_type = "off-premises" + # ssh_key_name = ibm_power_vs_ssh_key.vijaykey.name + # standby_machine_type = "s922" + # standby_orchestrator_name = "drautomationstandby7a" + # standby_orchestrator_workspace_id = "71027b79-0e31-44f6-a499-63eca1a66feb" + # tier = "tier1" +# } + +# ================================================================================================== + +# Case 3: ManageDR with HA + schematic id + secrets + +# resource "ibm_drautomation_service_instance" "ha_dr_instance" { +# name = "service1234" +# crn = "crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf7::" +# enable_flag = false +# dr_location_id = "dal10" +# dr_orchestrator_name = "drautomationprimary7a" +# dr_orchestrator_password = "Password1234567" # Consider using a variable or secret reference +# dr_orchestrator_workspace_id = "75cbf05b-78f6-406e-afe7-a904f646d798" +# machine_type = "s922" +# orchestrator_cluster_type = "off-premises" +# schematic_workspace_id = "us-south.workspace.projects-service.3ae96a02" +# secret_group = "secret_group id" +# secret = "secret id" +# region_id = "us-south" +# guid = "gu id" +# standby_machine_type = "s922" +# standby_orchestrator_name = "drautomationstandby7a" +# standby_orchestrator_workspace_id = "71027b79-0e31-44f6-a499-63eca1a66feb" +# tier = "tier1" +# } + +# ================================================================================================== + +# Case 4: ManageDR with HA + custom VPC + secrets + +# resource "ibm_drautomation_service_instance" "ha_dr_instance" { +# name = "service1234" +# crn = "crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf7::" +# enable_flag = false +# dr_location_id = "dal10" +# dr_orchestrator_name = "drautomationprimary7a" +# dr_orchestrator_password = "Password1234567" # Use a variable or secret reference in production +# dr_orchestrator_workspace_id = "75cbf05b-78f6-406e-afe7-a904f646d798" +# machine_type = "s922" +# orchestrator_cluster_type = "off-premises" +# secret_group = "secret_group id" +# secret = "secret id" +# region_id = "us-south" +# guid = "gu id" +# standby_machine_type = "s922" +# standby_orchestrator_name = "drautomationstandby7a" +# standby_orchestrator_workspace_id = "71027b79-0e31-44f6-a499-63eca1a66feb" +# tier = "tier1" +# } + +# ================================================================================================== + # Non-HA Cases +# ================================================================================================== + +# Case 1: ManageDR without HA + schematic id + sshkey +# resource "ibm_drautomation_service_instance" "non_ha_dr_instance" { +# name = "service1234" +# crn = "crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf7::" +# enable_flag = false +# dr_location_id = "dal10" +# dr_orchestrator_name = "drautomationprimary7a" +# dr_orchestrator_password = "Password1234567" # Use a variable or secret reference in production +# dr_orchestrator_workspace_id = "75cbf05b-78f6-406e-afe7-a904f646d798" +# machine_type = "s922" +# orchestrator_cluster_type = "off-premises" +# schematic_workspace_id = "us-south.workspace.projects-service.3ae96a02" +# ssh_key_name = ibm_power_vs_ssh_key.vijaykey.name +# tier = "tier1" +# } + +# ================================================================================================== + +# Case 2: ManageDR without HA + custom VPC + sshkey +# resource "ibm_drautomation_service_instance" "non_ha_dr_instance" { +# name = "service1234" +# crn = "crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf7::" +# enable_flag = false +# dr_location_id = "dal10" +# dr_orchestrator_name = "drautomationprimary7a" +# dr_orchestrator_password = "Password1234567" # Use a variable or secret reference in production +# dr_orchestrator_workspace_id = "75cbf05b-78f6-406e-afe7-a904f646d798" +# machine_type = "s922" +# orchestrator_cluster_type = "off-premises" +# ssh_key_name = ibm_power_vs_ssh_key.vijaykey.name +# tier = "tier1" +# } + +# ================================================================================================== + +# Case 3: ManageDR without HA + schematic id + secrets +# resource "ibm_drautomation_service_instance" "non_ha_dr_instance" { +# name = "service1234" +# crn = "crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf7::" +# enable_flag = false# +# dr_location_id = "dal10" +# dr_orchestrator_name = "drautomationprimary7a" +# dr_orchestrator_password = "Password1234567" # Use a variable or secret reference in production +# dr_orchestrator_workspace_id = "75cbf05b-78f6-406e-afe7-a904f646d798" +# machine_type = "s922" +# orchestrator_cluster_type = "off-premises" +# schematic_workspace_id = "us-south.workspace.projects-service.3ae96a02" +# secret_group = "secret_group id" +# secret = "secret id" +# region_id = "us-south" +# guid = "gu id" +# tier = "tier1" +# } + +# ================================================================================================== + +# Case 4: ManageDR without HA + custom VPC + secrets +# resource "ibm_drautomation_service_instance" "non_ha_dr_instance" { +# name = "service1234" +# crn = "crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf7::" +# enable_flag = false# +# dr_location_id = "dal10" +# dr_orchestrator_name = "drautomationprimary7a" +# dr_orchestrator_password = "Password1234567" # Use a variable or secret reference in production +# dr_orchestrator_workspace_id = "75cbf05b-78f6-406e-afe7-a904f646d798" +# machine_type = "s922" +# orchestrator_cluster_type = "off-premises" +# secret_group = "secret_group id" +# secret = "secret id" +# region_id = "us-south" +# guid = "gu id" +# tier = "tier1" +# } + + +# ================================================================================ + diff --git a/website/docs/r/pdr_validate_apikey.html.markdown b/website/docs/r/pdr_validate_apikey.html.markdown new file mode 100755 index 0000000000..73ed665afe --- /dev/null +++ b/website/docs/r/pdr_validate_apikey.html.markdown @@ -0,0 +1,53 @@ +--- +layout: "ibm" +page_title: "IBM : ibm_pdr_validate_apikey" +description: |- + Manages pdr_validate_apikey. +subcategory: "DrAutomation Service" +--- + +# ibm_pdr_validate_apikey + +Create, update, and delete pdr_validate_apikeys with this resource. + +## Example Usage + +```hcl +resource "ibm_pdr_validate_apikey" "pdr_validate_apikey_instance" { + instance_id = "crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::" +} +``` + +## Argument Reference + +You can specify the following arguments for this resource. + +* `accept_language` - (Optional, String) The language requested for the return document. +* `instance_id` - (Required, Forces new resource, String) instance id of instance to provision. + +## Attribute Reference + +After your resource is created, you can read values from the listed arguments and the following attributes. + +* `id` - The unique identifier of the pdr_validate_apikey. +* `description` - (String) Validation result message. +* `instance_id` - (String) Unique identifier of the API key. +* `status` - (String) Status of the API key. + +* `etag` - ETag identifier for pdr_validate_apikey. + +## Import + +You can import the `ibm_pdr_validate_apikey` resource by using `id`. +The `id` property can be formed from `instance_id`, and `instance_id` in the following format: + +
+<instance_id>/<instance_id>
+
+* `instance_id`: A string in the format `crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::`. instance id of instance to provision. +* `instance_id`: A string in the format `crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::`. Unique identifier of the API key. + +# Syntax +
+$ terraform import ibm_pdr_validate_apikey.pdr_validate_apikey <instance_id>/<instance_id>
+
From 72b7501c485944af594da3994c4fdb3ab4bd520c Mon Sep 17 00:00:00 2001 From: Mani-Raj-Langaru1 Date: Wed, 12 Nov 2025 06:10:00 -0500 Subject: [PATCH 04/13] updated Dr Automation APIs and Documentation --- go.mod | 60 ++-- go.sum | 147 ++++---- ibm/service/drautomationservice/README.md | 2 +- .../data_source_ibm_pdr_get_dr_locations.go | 9 +- ..._source_ibm_pdr_get_dr_summary_response.go | 74 ++-- ...ce_ibm_pdr_get_dr_summary_response_test.go | 4 +- .../data_source_ibm_pdr_get_event.go | 2 +- .../data_source_ibm_pdr_get_events.go | 2 +- .../data_source_ibm_pdr_get_machine_types.go | 14 +- ...a_source_ibm_pdr_get_machine_types_test.go | 2 +- ...data_source_ibm_pdr_get_managed_vm_list.go | 5 +- ...source_ibm_pdr_get_managed_vm_list_test.go | 8 +- ...ta_source_ibm_pdr_get_powervs_workspace.go | 22 +- .../data_source_ibm_pdr_last_operation.go | 56 +-- ...data_source_ibm_pdr_last_operation_test.go | 2 +- ibm/service/drautomationservice/dra-go-sdk | 1 + .../resource_ibm_pdr_managedr.go | 97 +++-- .../d/pdr_get_deployment_status.html.markdown | 45 --- .../docs/d/pdr_get_dr_locations.html.markdown | 2 +- .../pdr_get_dr_summary_response.html.markdown | 70 ++-- .../d/pdr_get_machine_types.html.markdown | 6 +- .../d/pdr_get_powervs_workspace.html.markdown | 24 +- .../docs/d/pdr_last_operation.html.markdown | 38 +- .../d/pdr_schematic_workspaces.html.markdown | 45 --- .../d/pdr_validate_clustertype.html.markdown | 37 -- .../docs/d/pdr_validate_proxyip.html.markdown | 42 --- .../d/pdr_validate_workspace.html.markdown | 40 --- .../d/pdr_workspace_custom_vpc.html.markdown | 66 ---- .../d/pdr_workspace_schematic.html.markdown | 65 ---- website/docs/r/pdr_managedr.html.markdown | 330 ++++++++---------- .../docs/r/pdr_validate_apikey.html.markdown | 6 +- 31 files changed, 487 insertions(+), 836 deletions(-) create mode 160000 ibm/service/drautomationservice/dra-go-sdk delete mode 100755 website/docs/d/pdr_get_deployment_status.html.markdown delete mode 100644 website/docs/d/pdr_schematic_workspaces.html.markdown delete mode 100755 website/docs/d/pdr_validate_clustertype.html.markdown delete mode 100755 website/docs/d/pdr_validate_proxyip.html.markdown delete mode 100755 website/docs/d/pdr_validate_workspace.html.markdown delete mode 100644 website/docs/d/pdr_workspace_custom_vpc.html.markdown delete mode 100644 website/docs/d/pdr_workspace_schematic.html.markdown diff --git a/go.mod b/go.mod index 95e908a96a..96db0a35e1 100644 --- a/go.mod +++ b/go.mod @@ -2,6 +2,8 @@ module github.com/IBM-Cloud/terraform-provider-ibm go 1.24.2 +replace github.ibm.com/DRAutomation/dra-go-sdk => ./ibm/service/dra-go-sdk + require ( github.com/IBM-Cloud/bluemix-go v0.0.0-20250324085928-caa6511f0c13 github.com/IBM-Cloud/container-services-go-sdk v0.0.0-20240725064144-454a2ae23113 @@ -17,7 +19,7 @@ require ( github.com/IBM/continuous-delivery-go-sdk/v2 v2.0.6 github.com/IBM/event-notifications-go-admin-sdk v0.18.0 github.com/IBM/eventstreams-go-sdk v1.4.0 - github.com/IBM/go-sdk-core/v5 v5.20.1 + github.com/IBM/go-sdk-core/v5 v5.21.0 github.com/IBM/ibm-backup-recovery-sdk-go v1.0.3 github.com/IBM/ibm-cos-sdk-go v1.12.2 github.com/IBM/ibm-cos-sdk-go-config/v2 v2.3.0 @@ -28,7 +30,7 @@ require ( github.com/IBM/logs-router-go-sdk v1.0.8 github.com/IBM/mqcloud-go-sdk v0.3.0 github.com/IBM/networking-go-sdk v0.51.10 - github.com/IBM/platform-services-go-sdk v0.84.4 + github.com/IBM/platform-services-go-sdk v0.87.0 github.com/IBM/project-go-sdk v0.3.5 github.com/IBM/push-notifications-go-sdk v0.0.0-20210310100607-5790b96c47f5 github.com/IBM/sarama v1.45.0 @@ -44,13 +46,14 @@ require ( github.com/akamai/AkamaiOPEN-edgegrid-golang/v5 v5.0.0 github.com/apache/openwhisk-client-go v0.0.0-20200201143223-a804fb82d105 github.com/apparentlymart/go-cidr v1.1.0 - github.com/go-openapi/strfmt v0.23.0 + github.com/go-openapi/strfmt v0.24.1-0.20250928163735-5c9b6bdeb47c github.com/golang-jwt/jwt/v5 v5.2.2 github.com/google/go-cmp v0.7.0 github.com/google/uuid v1.6.0 github.com/hashicorp/go-uuid v1.0.3 github.com/hashicorp/go-version v1.7.0 - github.com/hashicorp/terraform-plugin-sdk/v2 v2.35.0 + github.com/hashicorp/terraform-plugin-sdk/v2 v2.37.0 + github.com/hashicorp/terraform-plugin-testing v1.13.3 github.com/jinzhu/copier v0.3.2 github.com/minsikl/netscaler-nitro-go v0.0.0-20170827154432-5b14ce3643e3 github.com/mitchellh/go-homedir v1.1.0 @@ -59,8 +62,9 @@ require ( github.com/pkg/errors v0.9.1 github.com/rook/rook/pkg/apis v0.0.0-20250619203122-80563e28b685 github.com/softlayer/softlayer-go v1.0.3 - github.com/stretchr/testify v1.10.0 - golang.org/x/crypto v0.40.0 + github.com/stretchr/testify v1.11.1 + github.ibm.com/DRAutomation/dra-go-sdk v0.0.0-20251104054047-090b5d3b82c6 + golang.org/x/crypto v0.42.0 gopkg.in/yaml.v3 v3.0.1 gotest.tools v2.2.0+incompatible k8s.io/api v0.33.2 @@ -75,12 +79,11 @@ require github.com/BurntSushi/toml v1.2.0 // indirect require ( github.com/Logicalis/asn1 v0.0.0-20190312173541-d60463189a56 // indirect github.com/PromonLogicalis/asn1 v0.0.0-20190312173541-d60463189a56 // indirect - github.com/ProtonMail/go-crypto v1.1.0-alpha.2 // indirect + github.com/ProtonMail/go-crypto v1.1.6 // indirect github.com/agext/levenshtein v1.2.2 // indirect github.com/andres-erbsen/clock v0.0.0-20160526145045-9e14626cd129 // indirect github.com/apex/log v1.9.0 // indirect github.com/apparentlymart/go-textseg/v15 v15.0.0 // indirect - github.com/asaskevich/govalidator v0.0.0-20230301143203-a9d515a09cc2 // indirect github.com/cenkalti/backoff/v4 v4.3.0 // indirect github.com/cloudflare/circl v1.6.1 // indirect github.com/cloudfoundry/jibber_jabber v0.0.0-20151120183258-bcc4c8345a21 // indirect @@ -100,7 +103,7 @@ require ( github.com/go-logr/logr v1.4.2 // indirect github.com/go-logr/stdr v1.2.2 // indirect github.com/go-openapi/analysis v0.23.0 // indirect - github.com/go-openapi/errors v0.22.1 // indirect + github.com/go-openapi/errors v0.22.3 // indirect github.com/go-openapi/jsonpointer v0.21.1 // indirect github.com/go-openapi/jsonreference v0.21.0 // indirect github.com/go-openapi/loads v0.22.0 // indirect @@ -113,6 +116,7 @@ require ( github.com/go-playground/universal-translator v0.18.1 // indirect github.com/go-playground/validator/v10 v10.26.0 // indirect github.com/go-test/deep v1.1.0 // indirect + github.com/go-viper/mapstructure/v2 v2.4.0 // indirect github.com/gogo/protobuf v1.3.2 // indirect github.com/golang/protobuf v1.5.4 // indirect github.com/golang/snappy v0.0.4 // indirect @@ -122,24 +126,24 @@ require ( github.com/hashicorp/errwrap v1.1.0 // indirect github.com/hashicorp/go-checkpoint v0.5.0 // indirect github.com/hashicorp/go-cleanhttp v0.5.2 // indirect - github.com/hashicorp/go-cty v1.4.1-0.20200414143053-d3edf31b6320 // indirect + github.com/hashicorp/go-cty v1.5.0 // indirect github.com/hashicorp/go-hclog v1.6.3 // indirect github.com/hashicorp/go-multierror v1.1.1 // indirect - github.com/hashicorp/go-plugin v1.6.2 // indirect + github.com/hashicorp/go-plugin v1.6.3 // indirect github.com/hashicorp/go-retryablehttp v0.7.7 // indirect github.com/hashicorp/go-rootcerts v1.0.2 // indirect github.com/hashicorp/go-secure-stdlib/parseutil v0.1.8 // indirect github.com/hashicorp/go-secure-stdlib/strutil v0.1.2 // indirect github.com/hashicorp/go-sockaddr v1.0.7 // indirect - github.com/hashicorp/hc-install v0.9.0 // indirect + github.com/hashicorp/hc-install v0.9.2 // indirect github.com/hashicorp/hcl v1.0.1-vault-7 // indirect github.com/hashicorp/hcl/v2 v2.23.0 // indirect github.com/hashicorp/logutils v1.0.0 // indirect - github.com/hashicorp/terraform-exec v0.21.0 // indirect - github.com/hashicorp/terraform-json v0.23.0 // indirect - github.com/hashicorp/terraform-plugin-go v0.25.0 // indirect + github.com/hashicorp/terraform-exec v0.23.0 // indirect + github.com/hashicorp/terraform-json v0.25.0 // indirect + github.com/hashicorp/terraform-plugin-go v0.28.0 // indirect github.com/hashicorp/terraform-plugin-log v0.9.0 // indirect - github.com/hashicorp/terraform-registry-address v0.2.3 // indirect + github.com/hashicorp/terraform-registry-address v0.2.5 // indirect github.com/hashicorp/terraform-svchost v0.1.1 // indirect github.com/hashicorp/vault/api v1.16.0 // indirect github.com/hashicorp/vault/api/auth/approle v0.8.0 // indirect @@ -191,8 +195,8 @@ require ( github.com/vmihailenco/msgpack/v5 v5.4.1 // indirect github.com/vmihailenco/tagparser/v2 v2.0.0 // indirect github.com/x448/float16 v0.8.4 // indirect - github.com/zclconf/go-cty v1.15.0 // indirect - go.mongodb.org/mongo-driver v1.17.3 // indirect + github.com/zclconf/go-cty v1.16.3 // indirect + go.mongodb.org/mongo-driver v1.17.4 // indirect go.opentelemetry.io/auto/sdk v1.1.0 // indirect go.opentelemetry.io/otel v1.35.0 // indirect go.opentelemetry.io/otel/metric v1.35.0 // indirect @@ -201,19 +205,19 @@ require ( go.uber.org/automaxprocs v1.6.0 // indirect go.uber.org/ratelimit v0.2.0 // indirect go.uber.org/zap v1.27.0 // indirect - golang.org/x/mod v0.25.0 // indirect - golang.org/x/net v0.42.0 // indirect + golang.org/x/mod v0.27.0 // indirect + golang.org/x/net v0.44.0 // indirect golang.org/x/oauth2 v0.27.0 // indirect - golang.org/x/sync v0.16.0 // indirect - golang.org/x/sys v0.34.0 // indirect - golang.org/x/term v0.33.0 // indirect - golang.org/x/text v0.27.0 // indirect + golang.org/x/sync v0.17.0 // indirect + golang.org/x/sys v0.36.0 // indirect + golang.org/x/term v0.35.0 // indirect + golang.org/x/text v0.29.0 // indirect golang.org/x/time v0.9.0 // indirect - golang.org/x/tools v0.34.0 // indirect + golang.org/x/tools v0.36.0 // indirect google.golang.org/appengine v1.6.8 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20240814211410-ddb44dafa142 // indirect - google.golang.org/grpc v1.67.1 // indirect - google.golang.org/protobuf v1.36.5 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20250218202821-56aae31c358a // indirect + google.golang.org/grpc v1.72.1 // indirect + google.golang.org/protobuf v1.36.6 // indirect gopkg.in/evanphx/json-patch.v4 v4.12.0 // indirect gopkg.in/inf.v0 v0.9.1 // indirect gopkg.in/ini.v1 v1.67.0 // indirect diff --git a/go.sum b/go.sum index f842ffd000..0a7eda37fb 100644 --- a/go.sum +++ b/go.sum @@ -126,8 +126,8 @@ github.com/IBM/go-sdk-core/v5 v5.6.3/go.mod h1:tt/B9rxLkRtglE7pvqLuYikgCXaZFL3bt github.com/IBM/go-sdk-core/v5 v5.9.5/go.mod h1:YlOwV9LeuclmT/qi/LAK2AsobbAP42veV0j68/rlZsE= github.com/IBM/go-sdk-core/v5 v5.10.2/go.mod h1:WZPFasUzsKab/2mzt29xPcfruSk5js2ywAPwW4VJjdI= github.com/IBM/go-sdk-core/v5 v5.17.4/go.mod h1:KsAAI7eStAWwQa4F96MLy+whYSh39JzNjklZRbN/8ns= -github.com/IBM/go-sdk-core/v5 v5.20.1 h1:dzeyifh1kfRLw8VfAIIS5okZYuqLTqplPZP/Kcsgdlo= -github.com/IBM/go-sdk-core/v5 v5.20.1/go.mod h1:Q3BYO6iDA2zweQPDGbNTtqft5tDcEpm6RTuqMlPcvbw= +github.com/IBM/go-sdk-core/v5 v5.21.0 h1:DUnYhvC4SoC8T84rx5omnhY3+xcQg/Whyoa3mDPIMkk= +github.com/IBM/go-sdk-core/v5 v5.21.0/go.mod h1:Q3BYO6iDA2zweQPDGbNTtqft5tDcEpm6RTuqMlPcvbw= github.com/IBM/ibm-backup-recovery-sdk-go v1.0.3 h1:9TZHocmCfgmF8TGVrpP1kFyQbjcqLNW7+bM07lefpKQ= github.com/IBM/ibm-backup-recovery-sdk-go v1.0.3/go.mod h1:jsYutWlnGysdCNoAk0zoIXb2vfKM9TmMpiUkI4pVuXY= github.com/IBM/ibm-cos-sdk-go v1.12.2 h1:71A4tDl8u6BZ548h71ecEe7fw5bBA7ECTVqYmeSQWQA= @@ -149,8 +149,8 @@ github.com/IBM/mqcloud-go-sdk v0.3.0 h1:zuRe+lu6IwIzsBsmoVKZT4JgX+GxH5PJG06r5y5X github.com/IBM/mqcloud-go-sdk v0.3.0/go.mod h1:7zigCUz6k3eRrNE8KOcDkY72oPppEmoQifF+SB0NPRM= github.com/IBM/networking-go-sdk v0.51.10 h1:7IKKU2U/kxd2xWDCuapkRdo91WwRT+5aRl5vwyiXKV8= github.com/IBM/networking-go-sdk v0.51.10/go.mod h1:iM2xvQYk6cG6ZED8+7iRqt/eKGFIAxy4/gYUdlFswMQ= -github.com/IBM/platform-services-go-sdk v0.84.4 h1:HMq5E0DjAeta9OG4cEKEcHZLSaVj77t1+nJveJ8FIS4= -github.com/IBM/platform-services-go-sdk v0.84.4/go.mod h1:aGD045m6I8pfcB77wft8w2cHqWOJjcM3YSSV55BX0Js= +github.com/IBM/platform-services-go-sdk v0.87.0 h1:hLx/I7n7cb1CyAXdb2qypmCoFiYuxh2g50qN8OGnEQc= +github.com/IBM/platform-services-go-sdk v0.87.0/go.mod h1:aGD045m6I8pfcB77wft8w2cHqWOJjcM3YSSV55BX0Js= github.com/IBM/project-go-sdk v0.3.5 h1:L+YClFUa14foS0B/hOOY9n7sIdsT5/XQicnXOyJSpyM= github.com/IBM/project-go-sdk v0.3.5/go.mod h1:FOJM9ihQV3EEAY6YigcWiTNfVCThtdY8bLC/nhQHFvo= github.com/IBM/push-notifications-go-sdk v0.0.0-20210310100607-5790b96c47f5 h1:NPUhkoOCRuv3OFWt19PmwjXGGTKlvmbuPg9fUrBUNe4= @@ -173,14 +173,14 @@ github.com/IBM/vpc-go-sdk v0.70.1 h1:6NsbRkiA5gDNxe7cjNx8Pi1j9s0PlhwNQj29wsKZxAo github.com/IBM/vpc-go-sdk v0.70.1/go.mod h1:K3vVlje72PYE3ZRt1iouE+jSIq+vCyYzT1HiFC06hUA= github.com/Logicalis/asn1 v0.0.0-20190312173541-d60463189a56 h1:vuquMR410psHNax14XKNWa0Ae/kYgWJcXi0IFuX60N0= github.com/Logicalis/asn1 v0.0.0-20190312173541-d60463189a56/go.mod h1:Zb3OT4l0mf7P/GOs2w2Ilj5sdm5Whoq3pa24dAEBHFc= -github.com/Microsoft/go-winio v0.6.1 h1:9/kr64B9VUZrLm5YYwbGtUJnMgqWVOdUAXu6Migciow= -github.com/Microsoft/go-winio v0.6.1/go.mod h1:LRdKpFKfdobln8UmuiYcKPot9D2v6svN5+sAH+4kjUM= +github.com/Microsoft/go-winio v0.6.2 h1:F2VQgta7ecxGYO8k3ZZz3RS8fVIXVxONVUPlNERoyfY= +github.com/Microsoft/go-winio v0.6.2/go.mod h1:yd8OoFMLzJbo9gZq8j5qaps8bJ9aShtEA8Ipt1oGCvU= github.com/NYTimes/gziphandler v0.0.0-20170623195520-56545f4a5d46/go.mod h1:3wb06e3pkSAbeQ52E9H9iFoQsEEwGN64994WTCIhntQ= github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU= github.com/PromonLogicalis/asn1 v0.0.0-20190312173541-d60463189a56 h1:zL3Ph7RCZadAPb7QV0gMIDmjuZHFawNhoPZ5erh6TRw= github.com/PromonLogicalis/asn1 v0.0.0-20190312173541-d60463189a56/go.mod h1:nE9BGpMlMfM9Z3U+P+mWtcHNDwHcGctalMx1VTkODAY= -github.com/ProtonMail/go-crypto v1.1.0-alpha.2 h1:bkyFVUP+ROOARdgCiJzNQo2V2kiB97LyUpzH9P6Hrlg= -github.com/ProtonMail/go-crypto v1.1.0-alpha.2/go.mod h1:rA3QumHc/FZ8pAHreoekgiAbzpNsfQAosU5td4SnOrE= +github.com/ProtonMail/go-crypto v1.1.6 h1:ZcV+Ropw6Qn0AX9brlQLAUXfqLBc7Bl+f/DmNxpLfdw= +github.com/ProtonMail/go-crypto v1.1.6/go.mod h1:rA3QumHc/FZ8pAHreoekgiAbzpNsfQAosU5td4SnOrE= github.com/PuerkitoBio/purell v1.0.0/go.mod h1:c11w/QuzBsJSee3cPx9rAFu61PvFxuPbtSwDGJws/X0= github.com/PuerkitoBio/purell v1.1.0/go.mod h1:c11w/QuzBsJSee3cPx9rAFu61PvFxuPbtSwDGJws/X0= github.com/PuerkitoBio/purell v1.1.1/go.mod h1:c11w/QuzBsJSee3cPx9rAFu61PvFxuPbtSwDGJws/X0= @@ -292,8 +292,8 @@ github.com/cpuguy83/go-md2man v1.0.10/go.mod h1:SmD6nW6nTyfqj6ABTjUi3V3JVMnlJmwc github.com/cpuguy83/go-md2man/v2 v2.0.0/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= github.com/creack/pty v1.1.7/go.mod h1:lj5s0c3V2DBrqTV7llrYr5NG6My20zk30Fl46Y7DoTY= github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= -github.com/cyphar/filepath-securejoin v0.2.4 h1:Ugdm7cg7i6ZK6x3xDF1oEu1nfkyfH53EtKeQYTC3kyg= -github.com/cyphar/filepath-securejoin v0.2.4/go.mod h1:aPGpWjXOXUn2NCNjFvBE6aRxGGx79pTxQpKOJNYHHl4= +github.com/cyphar/filepath-securejoin v0.4.1 h1:JyxxyPEaktOD+GAnqIqTf9A8tHyAG22rowi7HkoSU1s= +github.com/cyphar/filepath-securejoin v0.4.1/go.mod h1:Sdj7gXlvMcPZsbhwhQ33GguGLDGQL7h7bg04C/+u9jI= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc h1:U9qPSI2PIWSS1VwoXQT9A3Wy9MM3WgvqSxFWenqJduM= @@ -371,10 +371,10 @@ github.com/globalsign/mgo v0.0.0-20180905125535-1ca0a4f7cbcb/go.mod h1:xkRDCp4j0 github.com/globalsign/mgo v0.0.0-20181015135952-eeefdecb41b8/go.mod h1:xkRDCp4j0OGD1HRkm4kmhM+pmpv3AKq5SU7GMg4oO/Q= github.com/go-git/gcfg v1.5.1-0.20230307220236-3a3c6141e376 h1:+zs/tPmkDkHx3U66DAb0lQFJrpS6731Oaa12ikc+DiI= github.com/go-git/gcfg v1.5.1-0.20230307220236-3a3c6141e376/go.mod h1:an3vInlBmSxCcxctByoQdvwPiA7DTK7jaaFDBTtu0ic= -github.com/go-git/go-billy/v5 v5.5.0 h1:yEY4yhzCDuMGSv83oGxiBotRzhwhNr8VZyphhiu+mTU= -github.com/go-git/go-billy/v5 v5.5.0/go.mod h1:hmexnoNsr2SJU1Ju67OaNz5ASJY3+sHgFRpCtpDCKow= -github.com/go-git/go-git/v5 v5.12.0 h1:7Md+ndsjrzZxbddRDZjF14qK+NN56sy6wkqaVrjZtys= -github.com/go-git/go-git/v5 v5.12.0/go.mod h1:FTM9VKtnI2m65hNI/TenDDDnUf2Q9FHnXYjuz9i5OEY= +github.com/go-git/go-billy/v5 v5.6.2 h1:6Q86EsPXMa7c3YZ3aLAQsMA0VlWmy43r6FHqa/UNbRM= +github.com/go-git/go-billy/v5 v5.6.2/go.mod h1:rcFC2rAsp/erv7CMz9GczHcuD0D32fWzH+MJAU+jaUU= +github.com/go-git/go-git/v5 v5.14.0 h1:/MD3lCrGjCen5WfEAzKg00MJJffKhC8gzS80ycmCi60= +github.com/go-git/go-git/v5 v5.14.0/go.mod h1:Z5Xhoia5PcWA3NF8vRLURn9E5FRhSl7dGj9ItW3Wk5k= github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU= github.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= github.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= @@ -415,8 +415,8 @@ github.com/go-openapi/errors v0.20.0/go.mod h1:cM//ZKUKyO06HSwqAelJ5NsEMMcpa6VpX github.com/go-openapi/errors v0.20.2/go.mod h1:cM//ZKUKyO06HSwqAelJ5NsEMMcpa6VpXe8DOa1Mi1M= github.com/go-openapi/errors v0.20.3/go.mod h1:Z3FlZ4I8jEGxjUK+bugx3on2mIAk4txuAOhlsB1FSgk= github.com/go-openapi/errors v0.21.0/go.mod h1:jxNTMUxRCKj65yb/okJGEtahVd7uvWnuWfj53bse4ho= -github.com/go-openapi/errors v0.22.1 h1:kslMRRnK7NCb/CvR1q1VWuEQCEIsBGn5GgKD9e+HYhU= -github.com/go-openapi/errors v0.22.1/go.mod h1:+n/5UdIqdVnLIJ6Q9Se8HNGUXYaY6CN8ImWzfi/Gzp0= +github.com/go-openapi/errors v0.22.3 h1:k6Hxa5Jg1TUyZnOwV2Lh81j8ayNw5VVYLvKrp4zFKFs= +github.com/go-openapi/errors v0.22.3/go.mod h1:+WvbaBBULWCOna//9B9TbLNGSFOfF8lY9dw4hGiEiKQ= github.com/go-openapi/jsonpointer v0.0.0-20160704185906-46af16f9f7b1/go.mod h1:+35s3my2LFTysnkMfxsJBAMHj/DoqoB9knIWoYG/Vk0= github.com/go-openapi/jsonpointer v0.17.0/go.mod h1:cOnomiV+CVVwFLk0A/MExoFMjwdsUdVpsRhURCKh+3M= github.com/go-openapi/jsonpointer v0.18.0/go.mod h1:cOnomiV+CVVwFLk0A/MExoFMjwdsUdVpsRhURCKh+3M= @@ -462,8 +462,8 @@ github.com/go-openapi/strfmt v0.21.1/go.mod h1:I/XVKeLc5+MM5oPNN7P6urMOpuLXEcNrC github.com/go-openapi/strfmt v0.21.3/go.mod h1:k+RzNO0Da+k3FrrynSNN8F7n/peCmQQqbbXjtDfvmGg= github.com/go-openapi/strfmt v0.21.7/go.mod h1:adeGTkxE44sPyLk0JV235VQAO/ZXUr8KAzYjclFs3ew= github.com/go-openapi/strfmt v0.22.1/go.mod h1:OfVoytIXJasDkkGvkb1Cceb3BPyMOwk1FgmyyEw7NYg= -github.com/go-openapi/strfmt v0.23.0 h1:nlUS6BCqcnAk0pyhi9Y+kdDVZdZMHfEKQiS4HaMgO/c= -github.com/go-openapi/strfmt v0.23.0/go.mod h1:NrtIpfKtWIygRkKVsxh7XQMDQW5HKQl6S5ik2elW+K4= +github.com/go-openapi/strfmt v0.24.1-0.20250928163735-5c9b6bdeb47c h1:2qXCCFMLfKkjdZF/87VmmKUYafETRXdSE/OxrghKAfA= +github.com/go-openapi/strfmt v0.24.1-0.20250928163735-5c9b6bdeb47c/go.mod h1:MXNXmOAf2skBOkUyTR/pzp5/DYMJTE/VHx8zA8kPq1c= github.com/go-openapi/swag v0.0.0-20160704191624-1d0bd113de87/go.mod h1:DXUve3Dpr1UfpPtxFw+EFuQ41HhCWZfha5jSVRG7C7I= github.com/go-openapi/swag v0.17.0/go.mod h1:AByQ+nYG6gQg71GINrmuDXCPWdL640yX49/kXLo40Tg= github.com/go-openapi/swag v0.18.0/go.mod h1:AByQ+nYG6gQg71GINrmuDXCPWdL640yX49/kXLo40Tg= @@ -502,6 +502,8 @@ github.com/go-test/deep v1.0.2/go.mod h1:wGDj63lr65AM2AQyKZd/NYHGb0R+1RLqB8NKt3a github.com/go-test/deep v1.0.8/go.mod h1:5C2ZWiW0ErCdrYzpqxLbTX7MG14M9iiw8DgHncVwcsE= github.com/go-test/deep v1.1.0 h1:WOcxcdHcvdgThNXjw0t76K42FXTU7HpNQWHpA2HHNlg= github.com/go-test/deep v1.1.0/go.mod h1:5C2ZWiW0ErCdrYzpqxLbTX7MG14M9iiw8DgHncVwcsE= +github.com/go-viper/mapstructure/v2 v2.4.0 h1:EBsztssimR/CONLSZZ04E8qAkxNYq4Qp9LvH92wZUgs= +github.com/go-viper/mapstructure/v2 v2.4.0/go.mod h1:oJDH3BJKyqBA2TXFhDsKDGDTlndYOZ6rGS0BRZIxGhM= github.com/gobuffalo/attrs v0.0.0-20190224210810-a9411de4debd/go.mod h1:4duuawTqi2wkkpB4ePgWMaai6/Kc6WEz83bhFwpHzj0= github.com/gobuffalo/depgen v0.0.0-20190329151759-d478694a28d3/go.mod h1:3STtPUQYuzV0gBVOY3vy6CfMm/ljR4pABfrTeHNLHUY= github.com/gobuffalo/depgen v0.1.0/go.mod h1:+ifsuy7fhi15RWncXQQKjWS9JPkdah5sZvtHc2RXGlg= @@ -543,8 +545,9 @@ github.com/golang/groupcache v0.0.0-20190129154638-5b532d6fd5ef/go.mod h1:cIg4er github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20191227052852-215e87163ea7/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= -github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da h1:oI5xCqsCo564l8iNU+DwB5epxmsaqB+rhGL0m5jtYqE= github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= +github.com/golang/groupcache v0.0.0-20241129210726-2c02b8208cf8 h1:f+oWsMOmNPc8JmEHVZIycC7hBoQxHH9pNKQORJNozsQ= +github.com/golang/groupcache v0.0.0-20241129210726-2c02b8208cf8/go.mod h1:wcDNUvekVysuuOpQKo3191zZyTpiI6se1N1ULghS0sw= github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= github.com/golang/mock v1.2.0/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= github.com/golang/mock v1.3.1/go.mod h1:sBzyDLLjw3U8JLTeZvSv8jJB+tU5PVekmnlKIyFUx0Y= @@ -681,8 +684,8 @@ github.com/hashicorp/go-cleanhttp v0.5.0/go.mod h1:JpRdi6/HCYpAwUzNwuwqhbovhLtng github.com/hashicorp/go-cleanhttp v0.5.1/go.mod h1:JpRdi6/HCYpAwUzNwuwqhbovhLtngrth3wmdIIUrZ80= github.com/hashicorp/go-cleanhttp v0.5.2 h1:035FKYIWjmULyFRBKPs8TBQoi0x6d9G4xc9neXJWAZQ= github.com/hashicorp/go-cleanhttp v0.5.2/go.mod h1:kO/YDlP8L1346E6Sodw+PrpBSV4/SoxCXGY6BqNFT48= -github.com/hashicorp/go-cty v1.4.1-0.20200414143053-d3edf31b6320 h1:1/D3zfFHttUKaCaGKZ/dR2roBXv0vKbSCnssIldfQdI= -github.com/hashicorp/go-cty v1.4.1-0.20200414143053-d3edf31b6320/go.mod h1:EiZBMaudVLy8fmjf9Npq1dq9RalhveqZG5w/yz3mHWs= +github.com/hashicorp/go-cty v1.5.0 h1:EkQ/v+dDNUqnuVpmS5fPqyY71NXVgT5gf32+57xY8g0= +github.com/hashicorp/go-cty v1.5.0/go.mod h1:lFUCG5kd8exDobgSfyj4ONE/dc822kiYMguVKdHGMLM= github.com/hashicorp/go-hclog v0.9.2/go.mod h1:5CU+agLiy3J7N7QjHK5d05KxGsuXiQLrjA0H7acj2lQ= github.com/hashicorp/go-hclog v0.16.2/go.mod h1:whpDNt7SSdeAju8AWKIWsul05p54N/39EeqMAyrmvFQ= github.com/hashicorp/go-hclog v1.5.0/go.mod h1:W4Qnvbt70Wk/zYJryRzDRU/4r0kIg0PVHBcfoyhpF5M= @@ -696,8 +699,8 @@ github.com/hashicorp/go-multierror v1.0.0/go.mod h1:dHtQlpGsu+cZNNAkkCN/P3hoUDHh github.com/hashicorp/go-multierror v1.1.0/go.mod h1:spPvp8C1qA32ftKqdAHm4hHTbPw+vmowP0z+KUhOZdA= github.com/hashicorp/go-multierror v1.1.1 h1:H5DkEtf6CXdFp0N0Em5UCwQpXMWke8IA0+lD48awMYo= github.com/hashicorp/go-multierror v1.1.1/go.mod h1:iw975J/qwKPdAO1clOe2L8331t/9/fmwbPZ6JB6eMoM= -github.com/hashicorp/go-plugin v1.6.2 h1:zdGAEd0V1lCaU0u+MxWQhtSDQmahpkwOun8U8EiRVog= -github.com/hashicorp/go-plugin v1.6.2/go.mod h1:CkgLQ5CZqNmdL9U9JzM532t8ZiYQ35+pj3b1FD37R0Q= +github.com/hashicorp/go-plugin v1.6.3 h1:xgHB+ZUSYeuJi96WtxEjzi23uh7YQpznjGh0U0UUrwg= +github.com/hashicorp/go-plugin v1.6.3/go.mod h1:MRobyh+Wc/nYy1V4KAXUiYfzxoYhs7V1mlH1Z7iY2h0= github.com/hashicorp/go-retryablehttp v0.5.3/go.mod h1:9B5zBasrRhHXnJnui7y6sL7es7NDiJgTc6Er0maI1Xs= github.com/hashicorp/go-retryablehttp v0.6.2/go.mod h1:gEx6HMUGxYYhJScX7W1Il64m6cc2C1mDaW3NQ9sY1FY= github.com/hashicorp/go-retryablehttp v0.6.6/go.mod h1:vAew36LZh98gCBJNLH42IQ1ER/9wtLZZ8meHqQvEYWY= @@ -730,8 +733,8 @@ github.com/hashicorp/golang-lru v0.0.0-20180201235237-0fb14efe8c47/go.mod h1:/m3 github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= github.com/hashicorp/golang-lru v0.5.4/go.mod h1:iADmTwqILo4mZ8BN3D2Q6+9jd8WM5uGBxy+E8yxSoD4= -github.com/hashicorp/hc-install v0.9.0 h1:2dIk8LcvANwtv3QZLckxcjyF5w8KVtiMxu6G6eLhghE= -github.com/hashicorp/hc-install v0.9.0/go.mod h1:+6vOP+mf3tuGgMApVYtmsnDoKWMDcFXeTxCACYZ8SFg= +github.com/hashicorp/hc-install v0.9.2 h1:v80EtNX4fCVHqzL9Lg/2xkp62bbvQMnvPQ0G+OmtO24= +github.com/hashicorp/hc-install v0.9.2/go.mod h1:XUqBQNnuT4RsxoxiM9ZaUk0NX8hi2h+Lb6/c0OZnC/I= github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ= github.com/hashicorp/hcl v1.0.1-vault-5/go.mod h1:XYhtn6ijBSAj6n4YqAaf7RBPS4I06AItNorpy+MoQNM= github.com/hashicorp/hcl v1.0.1-vault-7 h1:ag5OxFVy3QYTFTJODRzTKVZ6xvdfLLCA1cy/Y6xGI0I= @@ -743,18 +746,20 @@ github.com/hashicorp/logutils v1.0.0/go.mod h1:QIAnNjmIWmVIIkWDTG1z5v++HQmx9WQRO github.com/hashicorp/mdns v1.0.4/go.mod h1:mtBihi+LeNXGtG8L9dX59gAEa12BDtBQSp4v/YAJqrc= github.com/hashicorp/memberlist v0.5.0/go.mod h1:yvyXLpo0QaGE59Y7hDTsTzDD25JYBZ4mHgHUZ8lrOI0= github.com/hashicorp/serf v0.10.1/go.mod h1:yL2t6BqATOLGc5HF7qbFkTfXoPIY0WZdWHfEvMqbG+4= -github.com/hashicorp/terraform-exec v0.21.0 h1:uNkLAe95ey5Uux6KJdua6+cv8asgILFVWkd/RG0D2XQ= -github.com/hashicorp/terraform-exec v0.21.0/go.mod h1:1PPeMYou+KDUSSeRE9szMZ/oHf4fYUmB923Wzbq1ICg= -github.com/hashicorp/terraform-json v0.23.0 h1:sniCkExU4iKtTADReHzACkk8fnpQXrdD2xoR+lppBkI= -github.com/hashicorp/terraform-json v0.23.0/go.mod h1:MHdXbBAbSg0GvzuWazEGKAn/cyNfIB7mN6y7KJN6y2c= -github.com/hashicorp/terraform-plugin-go v0.25.0 h1:oi13cx7xXA6QciMcpcFi/rwA974rdTxjqEhXJjbAyks= -github.com/hashicorp/terraform-plugin-go v0.25.0/go.mod h1:+SYagMYadJP86Kvn+TGeV+ofr/R3g4/If0O5sO96MVw= +github.com/hashicorp/terraform-exec v0.23.0 h1:MUiBM1s0CNlRFsCLJuM5wXZrzA3MnPYEsiXmzATMW/I= +github.com/hashicorp/terraform-exec v0.23.0/go.mod h1:mA+qnx1R8eePycfwKkCRk3Wy65mwInvlpAeOwmA7vlY= +github.com/hashicorp/terraform-json v0.25.0 h1:rmNqc/CIfcWawGiwXmRuiXJKEiJu1ntGoxseG1hLhoQ= +github.com/hashicorp/terraform-json v0.25.0/go.mod h1:sMKS8fiRDX4rVlR6EJUMudg1WcanxCMoWwTLkgZP/vc= +github.com/hashicorp/terraform-plugin-go v0.28.0 h1:zJmu2UDwhVN0J+J20RE5huiF3XXlTYVIleaevHZgKPA= +github.com/hashicorp/terraform-plugin-go v0.28.0/go.mod h1:FDa2Bb3uumkTGSkTFpWSOwWJDwA7bf3vdP3ltLDTH6o= github.com/hashicorp/terraform-plugin-log v0.9.0 h1:i7hOA+vdAItN1/7UrfBqBwvYPQ9TFvymaRGZED3FCV0= github.com/hashicorp/terraform-plugin-log v0.9.0/go.mod h1:rKL8egZQ/eXSyDqzLUuwUYLVdlYeamldAHSxjUFADow= -github.com/hashicorp/terraform-plugin-sdk/v2 v2.35.0 h1:wyKCCtn6pBBL46c1uIIBNUOWlNfYXfXpVo16iDyLp8Y= -github.com/hashicorp/terraform-plugin-sdk/v2 v2.35.0/go.mod h1:B0Al8NyYVr8Mp/KLwssKXG1RqnTk7FySqSn4fRuLNgw= -github.com/hashicorp/terraform-registry-address v0.2.3 h1:2TAiKJ1A3MAkZlH1YI/aTVcLZRu7JseiXNRHbOAyoTI= -github.com/hashicorp/terraform-registry-address v0.2.3/go.mod h1:lFHA76T8jfQteVfT7caREqguFrW3c4MFSPhZB7HHgUM= +github.com/hashicorp/terraform-plugin-sdk/v2 v2.37.0 h1:NFPMacTrY/IdcIcnUB+7hsore1ZaRWU9cnB6jFoBnIM= +github.com/hashicorp/terraform-plugin-sdk/v2 v2.37.0/go.mod h1:QYmYnLfsosrxjCnGY1p9c7Zj6n9thnEE+7RObeYs3fA= +github.com/hashicorp/terraform-plugin-testing v1.13.3 h1:QLi/khB8Z0a5L54AfPrHukFpnwsGL8cwwswj4RZduCo= +github.com/hashicorp/terraform-plugin-testing v1.13.3/go.mod h1:WHQ9FDdiLoneey2/QHpGM/6SAYf4A7AZazVg7230pLE= +github.com/hashicorp/terraform-registry-address v0.2.5 h1:2GTftHqmUhVOeuu9CW3kwDkRe4pcBDq0uuK5VJngU1M= +github.com/hashicorp/terraform-registry-address v0.2.5/go.mod h1:PpzXWINwB5kuVS5CA7m1+eO2f1jKb5ZDIxrOPfpnGkg= github.com/hashicorp/terraform-svchost v0.1.1 h1:EZZimZ1GxdqFRinZ1tpJwVxxt49xc/S52uzrw4x0jKQ= github.com/hashicorp/terraform-svchost v0.1.1/go.mod h1:mNsjQfZyf/Jhz35v6/0LWcv26+X7JPS+buii2c9/ctc= github.com/hashicorp/vault/api v1.10.0/go.mod h1:jo5Y/ET+hNyz+JnKDt8XLAdKs+AM0G5W0Vp1IrFI8N8= @@ -1046,8 +1051,8 @@ github.com/pelletier/go-toml v1.7.0/go.mod h1:vwGMzjaWMwyfHwgIBhI2YUM4fB6nL6lVAv github.com/peterbourgon/diskv v2.0.1+incompatible/go.mod h1:uqqh8zWWbv1HBMNONnaR/tNboyR3/BZd58JJSHlUSCU= github.com/pierrec/lz4/v4 v4.1.22 h1:cKFw6uJDK+/gfw5BcDL0JL5aBsAFdsIT18eRtLj7VIU= github.com/pierrec/lz4/v4 v4.1.22/go.mod h1:gZWDp/Ze/IJXGXf23ltt2EXimqmTUXEy0GFuRQyBid4= -github.com/pjbgf/sha1cd v0.3.0 h1:4D5XXmUUBUl/xQ6IjCkEAbqXskkq/4O7LmGn0AqMDs4= -github.com/pjbgf/sha1cd v0.3.0/go.mod h1:nZ1rrWOcGJ5uZgEEVL1VUM9iRQiZvWdbZjkKyFzPPsI= +github.com/pjbgf/sha1cd v0.3.2 h1:a9wb0bp1oC2TGwStyn0Umc/IGKQnEgF0vVaZ8QF8eo4= +github.com/pjbgf/sha1cd v0.3.2/go.mod h1:zQWigSxVmsHEZow5qaLtPYxpcKMMQpa09ixqBxuCS6A= github.com/pkg/diff v0.0.0-20210226163009-20ebb0f2a09e/go.mod h1:pJLUxLENpZxwdsKMEsNbx1VGcRFpLqf3715MtcvvzbA= github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= @@ -1130,8 +1135,8 @@ github.com/sirupsen/logrus v1.7.0/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic github.com/sirupsen/logrus v1.9.0/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ= github.com/sirupsen/logrus v1.9.3 h1:dueUQJ1C2q9oE3F7wvmSGAaVtTmUizReu6fjN8uqzbQ= github.com/sirupsen/logrus v1.9.3/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ= -github.com/skeema/knownhosts v1.2.2 h1:Iug2P4fLmDw9f41PB6thxUkNUkJzB5i+1/exaj40L3A= -github.com/skeema/knownhosts v1.2.2/go.mod h1:xYbVRSPxqBZFrdmDyMmsOs+uX1UZC3nTN3ThzgDxUwo= +github.com/skeema/knownhosts v1.3.1 h1:X2osQ+RAjK76shCbvhHHHVl3ZlgDm8apHEHFqRjnBY8= +github.com/skeema/knownhosts v1.3.1/go.mod h1:r7KTdC8l4uxWRyK2TpQZ/1o5HaSzh06ePQNxPwTcfiY= github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc= github.com/smartystreets/assertions v1.0.0/go.mod h1:kHHU4qYBaI3q23Pp3VPrmWhuIUrLW/7eUrw0BU5VaoM= github.com/smartystreets/go-aws-auth v0.0.0-20180515143844-0c1422d1fdb9/go.mod h1:SnhjPscd9TpLiy1LpzGSKh3bXCfxxXuqd9xmQJy3slM= @@ -1178,8 +1183,8 @@ github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o github.com/stretchr/testify v1.8.2/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= -github.com/stretchr/testify v1.10.0 h1:Xv5erBjTwe/5IxqUQTdXv5kgmIvbHo3QQyRwhJsOfJA= -github.com/stretchr/testify v1.10.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= +github.com/stretchr/testify v1.11.1 h1:7s2iGBzp5EwR7/aIZr8ao5+dra3wiQyKjjFuvgVKu7U= +github.com/stretchr/testify v1.11.1/go.mod h1:wZwfW3scLgRK+23gO65QZefKpKQRnfz6sD981Nm4B6U= github.com/subosito/gotenv v1.2.0/go.mod h1:N0PQaV/YGNqwC0u51sEeR/aUtSLEXKX9iv69rRypqCw= github.com/tidwall/pretty v1.0.0/go.mod h1:XNkn88O1ChpSDQmQeStsy+sBenx6DDtFZJxhVysOjyk= github.com/tj/assert v0.0.0-20171129193455-018094318fb0/go.mod h1:mZ9/Rh9oLWpLLDRpvE+3b7gP/C2YyLFYxNmcLnPTMe0= @@ -1230,10 +1235,12 @@ github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9dec github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= github.com/yuin/goldmark v1.4.1/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= -github.com/zclconf/go-cty v1.15.0 h1:tTCRWxsexYUmtt/wVxgDClUe+uQusuI443uL6e+5sXQ= -github.com/zclconf/go-cty v1.15.0/go.mod h1:VvMs5i0vgZdhYawQNq5kePSpLAoz8u1xvZgrPIxfnZE= +github.com/zclconf/go-cty v1.16.3 h1:osr++gw2T61A8KVYHoQiFbFd1Lh3JOCXc/jFLJXKTxk= +github.com/zclconf/go-cty v1.16.3/go.mod h1:VvMs5i0vgZdhYawQNq5kePSpLAoz8u1xvZgrPIxfnZE= github.com/zclconf/go-cty-debug v0.0.0-20240509010212-0d6042c53940 h1:4r45xpDWB6ZMSMNJFMOjqrGHynW3DIBuR2H9j0ug+Mo= github.com/zclconf/go-cty-debug v0.0.0-20240509010212-0d6042c53940/go.mod h1:CmBdvvj3nqzfzJ6nTCIwDTPZ56aVGvDrmztiO5g3qrM= +github.ibm.com/DRAutomation/dra-go-sdk v0.0.0-20251104054047-090b5d3b82c6 h1:EbNVift6EX56MZKpRraACYwK6HdPG8bV/XeyA2SON1Q= +github.ibm.com/DRAutomation/dra-go-sdk v0.0.0-20251104054047-090b5d3b82c6/go.mod h1:elZ3feXTKo/gGNRHVxiSEL20xLkwRH8KYn5iWVa0yUw= go.etcd.io/bbolt v1.3.2/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU= go.etcd.io/bbolt v1.3.3/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU= go.etcd.io/bbolt v1.3.5/go.mod h1:G5EMThwa9y8QZGBClrRx5EY+Yw9kAhnjy3bSjsnlVTQ= @@ -1249,8 +1256,8 @@ go.mongodb.org/mongo-driver v1.7.5/go.mod h1:VXEWRZ6URJIkUq2SCAyapmhH0ZLRBP+FT4x go.mongodb.org/mongo-driver v1.10.0/go.mod h1:wsihk0Kdgv8Kqu1Anit4sfK+22vSFbUrAVEYRhCXrA8= go.mongodb.org/mongo-driver v1.11.3/go.mod h1:PTSz5yu21bkT/wXpkS7WR5f0ddqw5quethTUn9WM+2g= go.mongodb.org/mongo-driver v1.14.0/go.mod h1:Vzb0Mk/pa7e6cWw85R4F/endUC3u0U9jGcNU603k65c= -go.mongodb.org/mongo-driver v1.17.3 h1:TQyXhnsWfWtgAhMtOgtYHMTkZIfBTpMTsMnd9ZBeHxQ= -go.mongodb.org/mongo-driver v1.17.3/go.mod h1:Hy04i7O2kC4RS06ZrhPRqj/u4DTYkFDAAccj+rVKqgQ= +go.mongodb.org/mongo-driver v1.17.4 h1:jUorfmVzljjr0FLzYQsGP8cgN/qzzxlY9Vh0C9KFXVw= +go.mongodb.org/mongo-driver v1.17.4/go.mod h1:Hy04i7O2kC4RS06ZrhPRqj/u4DTYkFDAAccj+rVKqgQ= go.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU= go.opencensus.io v0.22.0/go.mod h1:+kGneAE2xo2IficOXnaByMWTGM9T73dGwxeWcUqIpI8= go.opencensus.io v0.22.2/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= @@ -1264,8 +1271,10 @@ go.opentelemetry.io/otel v1.35.0 h1:xKWKPxrxB6OtMCbmMY021CqC45J+3Onta9MqjhnusiQ= go.opentelemetry.io/otel v1.35.0/go.mod h1:UEqy8Zp11hpkUrL73gSlELM0DupHoiq72dR+Zqel/+Y= go.opentelemetry.io/otel/metric v1.35.0 h1:0znxYu2SNyuMSQT4Y9WDWej0VpcsxkuklLa4/siN90M= go.opentelemetry.io/otel/metric v1.35.0/go.mod h1:nKVFgxBZ2fReX6IlyW28MgZojkoAkJGaE8CpgeAU3oE= -go.opentelemetry.io/otel/sdk v1.28.0 h1:b9d7hIry8yZsgtbmM0DKyPWMMUMlK9NEKuIG4aBqWyE= -go.opentelemetry.io/otel/sdk v1.28.0/go.mod h1:oYj7ClPUA7Iw3m+r7GeEjz0qckQRJK2B8zjcZEfu7Pg= +go.opentelemetry.io/otel/sdk v1.34.0 h1:95zS4k/2GOy069d321O8jWgYsW3MzVV+KuSPKp7Wr1A= +go.opentelemetry.io/otel/sdk v1.34.0/go.mod h1:0e/pNiaMAqaykJGKbi+tSjWfNNHMTxoC9qANsCzbyxU= +go.opentelemetry.io/otel/sdk/metric v1.34.0 h1:5CeK9ujjbFVL5c1PhLuStg1wxA7vQv7ce1EK0Gyvahk= +go.opentelemetry.io/otel/sdk/metric v1.34.0/go.mod h1:jQ/r8Ze28zRKoNRdkjCZxfs6YvBTG1+YIqyFVFYec5w= go.opentelemetry.io/otel/trace v1.35.0 h1:dPpEfJu1sDIqruz7BHFG3c7528f6ddfSWfFDVt/xgMs= go.opentelemetry.io/otel/trace v1.35.0/go.mod h1:WUk7DtFp1Aw2MkvqGdwiXYDZZNvA/1J8o6xRXLrIkyc= go.opentelemetry.io/proto/otlp v0.7.0/go.mod h1:PqfVotwruBrMGOCsRd/89rSnXhoiJIqeYNgFYFoEGnI= @@ -1325,8 +1334,8 @@ golang.org/x/crypto v0.19.0/go.mod h1:Iy9bg/ha4yyC70EfRS8jz+B6ybOBKMaSxLj6P6oBDf golang.org/x/crypto v0.21.0/go.mod h1:0BP7YvVV9gBbVKyeTG0Gyn+gZm94bibOW5BjDEYAOMs= golang.org/x/crypto v0.22.0/go.mod h1:vr6Su+7cTlO45qkww3VDJlzDn0ctJvRgYbC2NvXHt+M= golang.org/x/crypto v0.23.0/go.mod h1:CKFgDieR+mRhux2Lsu27y0fO304Db0wZe70UKqHu0v8= -golang.org/x/crypto v0.40.0 h1:r4x+VvoG5Fm+eJcxMaY8CQM7Lb0l1lsmjGBQ6s8BfKM= -golang.org/x/crypto v0.40.0/go.mod h1:Qr1vMER5WyS2dfPHAlsOj01wgLbsyWtFn/aY+5+ZdxY= +golang.org/x/crypto v0.42.0 h1:chiH31gIWm57EkTXpwnqf8qeuMUi0yekh6mT2AvFlqI= +golang.org/x/crypto v0.42.0/go.mod h1:4+rDnOTJhQCx2q7/j6rAN5XDw8kPjeaXEUR2eL94ix8= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= @@ -1373,8 +1382,8 @@ golang.org/x/mod v0.9.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= golang.org/x/mod v0.10.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= golang.org/x/mod v0.12.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= golang.org/x/mod v0.14.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= -golang.org/x/mod v0.25.0 h1:n7a+ZbQKQA/Ysbyb0/6IbB1H/X41mKgbhfv7AfG/44w= -golang.org/x/mod v0.25.0/go.mod h1:IXM97Txy2VM4PJ3gI61r1YEk/gAj6zAHN3AdZt6S9Ww= +golang.org/x/mod v0.27.0 h1:kb+q2PyFnEADO2IEF935ehFUXlWiNjJWtRNgBLSfbxQ= +golang.org/x/mod v0.27.0/go.mod h1:rWI627Fq0DEoudcK+MBkNkCe0EetEaDSwJJkCcjpazc= golang.org/x/net v0.0.0-20170114055629-f2499483f923/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= @@ -1455,8 +1464,8 @@ golang.org/x/net v0.21.0/go.mod h1:bIjVDfnllIU7BJ2DNgfnXvpSvtn8VRwhlsaeUTyUS44= golang.org/x/net v0.23.0/go.mod h1:JKghWKKOSdJwpW2GEx0Ja7fmaKnMsbu+MWVZTokSYmg= golang.org/x/net v0.24.0/go.mod h1:2Q7sJY5mzlzWjKtYUEXSlBWCdyaioyXzRB2RtU8KVE8= golang.org/x/net v0.25.0/go.mod h1:JkAGAh7GEvH74S6FOH42FLoXpXbE/aqXSrIQjXgsiwM= -golang.org/x/net v0.42.0 h1:jzkYrhi3YQWD6MLBJcsklgQsoAcw89EcZbJw8Z614hs= -golang.org/x/net v0.42.0/go.mod h1:FF1RA5d3u7nAYA4z2TkclSCKh68eSXtiFwcWQpPXdt8= +golang.org/x/net v0.44.0 h1:evd8IRDyfNBMBTTY5XRF1vaZlD+EmWx6x8PkhR04H/I= +golang.org/x/net v0.44.0/go.mod h1:ECOoLqd5U3Lhyeyo/QDCEVQ4sNgYsqvCZ722XogGieY= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= @@ -1497,8 +1506,8 @@ golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.2.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.3.0/go.mod h1:FU7BRWz2tNW+3quACPkgCx/L+uEAv1htQ0V83Z9Rj+Y= golang.org/x/sync v0.5.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= -golang.org/x/sync v0.16.0 h1:ycBJEhp9p4vXvUZNszeOq0kGTPghopOL8q0fq3vstxw= -golang.org/x/sync v0.16.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA= +golang.org/x/sync v0.17.0 h1:l60nONMj9l5drqw6jlhIELNv9I0A4OFgRsG9k2oT9Ug= +golang.org/x/sync v0.17.0/go.mod h1:9KTHXmSnoGruLpwFjVSX0lNNA75CykiMECbovNTZqGI= golang.org/x/sys v0.0.0-20170830134202-bb24a47a89ea/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180823144017-11551d06cbcc/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= @@ -1619,8 +1628,8 @@ golang.org/x/sys v0.17.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/sys v0.18.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/sys v0.19.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/sys v0.20.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= -golang.org/x/sys v0.34.0 h1:H5Y5sJ2L2JRdyv7ROF1he/lPdvFsd0mJHFw2ThKHxLA= -golang.org/x/sys v0.34.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= +golang.org/x/sys v0.36.0 h1:KVRy2GtZBrk1cBYA7MKu5bEZFxQk4NIDV6RLVcC8o0k= +golang.org/x/sys v0.36.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210615171337-6886f2dfbf5b/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= @@ -1641,8 +1650,8 @@ golang.org/x/term v0.17.0/go.mod h1:lLRBjIVuehSbZlaOtGMbcMncT+aqLLLmKrsjNrUguwk= golang.org/x/term v0.18.0/go.mod h1:ILwASektA3OnRv7amZ1xhE/KTR+u50pbXfZ03+6Nx58= golang.org/x/term v0.19.0/go.mod h1:2CuTdWZ7KHSQwUzKva0cbMg6q2DMI3Mmxp+gKJbskEk= golang.org/x/term v0.20.0/go.mod h1:8UkIAJTvZgivsXaD6/pH6U9ecQzZ45awqEOzuCvwpFY= -golang.org/x/term v0.33.0 h1:NuFncQrRcaRvVmgRkvM3j/F00gWIAlcmlB8ACEKmGIg= -golang.org/x/term v0.33.0/go.mod h1:s18+ql9tYWp1IfpV9DmCtQDDSRBUjKaw9M1eAv5UeF0= +golang.org/x/term v0.35.0 h1:bZBVKBudEyhRcajGcNc3jIfWPqV4y/Kt2XcoigOWtDQ= +golang.org/x/term v0.35.0/go.mod h1:TPGtkTLesOwf2DE8CgVYiZinHAOuy5AYUYT1lENIZnA= golang.org/x/text v0.0.0-20160726164857-2910a502d2bf/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= @@ -1665,8 +1674,8 @@ golang.org/x/text v0.12.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= golang.org/x/text v0.13.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= golang.org/x/text v0.15.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= -golang.org/x/text v0.27.0 h1:4fGWRpyh641NLlecmyl4LOe6yDdfaYNrGb2zdfo4JV4= -golang.org/x/text v0.27.0/go.mod h1:1D28KMCvyooCX9hBiosv5Tz/+YLxj0j7XhWjpSUF7CU= +golang.org/x/text v0.29.0 h1:1neNs90w9YzJ9BocxfsQNHKuAT4pkghyXc4nhZ6sJvk= +golang.org/x/text v0.29.0/go.mod h1:7MhJOA9CD2qZyOKYazxdYMF85OwPdEr9jTtBpO7ydH4= golang.org/x/time v0.0.0-20180412165947-fbb02b2291d2/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= @@ -1762,8 +1771,8 @@ golang.org/x/tools v0.12.0/go.mod h1:Sc0INKfu04TlqNoRA1hgpFZbhYXHPr4V5DzpSBTPqQM golang.org/x/tools v0.12.1-0.20230815132531-74c255bcf846/go.mod h1:Sc0INKfu04TlqNoRA1hgpFZbhYXHPr4V5DzpSBTPqQM= golang.org/x/tools v0.13.0/go.mod h1:HvlwmtVNQAhOuCjW7xxvovg8wbNq7LwfXh/k7wXUl58= golang.org/x/tools v0.16.1/go.mod h1:kYVVN6I1mBNoB1OX+noeBjbRk4IUEPa7JJ+TJMEooJ0= -golang.org/x/tools v0.34.0 h1:qIpSLOxeCYGg9TrcJokLBG4KFA6d795g0xkBkiESGlo= -golang.org/x/tools v0.34.0/go.mod h1:pAP9OwEaY1CAW3HOmg3hLZC5Z0CCmzjAF2UQMSqNARg= +golang.org/x/tools v0.36.0 h1:kWS0uv/zsvHEle1LbV5LE8QujrxB3wfQyxHfhOk0Qkg= +golang.org/x/tools v0.36.0/go.mod h1:WBDiHKJK8YgLHlcQPYQzNCkUxUypCaa5ZegCVutKm+s= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= @@ -1894,8 +1903,8 @@ google.golang.org/genproto v0.0.0-20220421151946-72621c1f0bd3/go.mod h1:8w6bsBMX google.golang.org/genproto v0.0.0-20220429170224-98d788798c3e/go.mod h1:8w6bsBMX6yCPbAVTeqQHvzxW0EIFigd5lZyahWgyfDo= google.golang.org/genproto v0.0.0-20220505152158-f39f71e6c8f3/go.mod h1:RAyBrSAP7Fh3Nc84ghnVLDPuV51xc9agzmm4Ph6i0Q4= google.golang.org/genproto v0.0.0-20220602131408-e326c6e8e9c8/go.mod h1:yKyY4AMRwFiC8yMMNaMi+RkCnjZJt9LoWuvhXjMs+To= -google.golang.org/genproto/googleapis/rpc v0.0.0-20240814211410-ddb44dafa142 h1:e7S5W7MGGLaSu8j3YjdezkZ+m1/Nm0uRVRMEMGk26Xs= -google.golang.org/genproto/googleapis/rpc v0.0.0-20240814211410-ddb44dafa142/go.mod h1:UqMtugtsSgubUsoxbuAoiCXvqvErP7Gf0so0mK9tHxU= +google.golang.org/genproto/googleapis/rpc v0.0.0-20250218202821-56aae31c358a h1:51aaUVRocpvUOSQKM6Q7VuoaktNIaMCLuhZB6DKksq4= +google.golang.org/genproto/googleapis/rpc v0.0.0-20250218202821-56aae31c358a/go.mod h1:uRxBH1mhmO8PGhU89cMcHaXKZqO+OfakD8QQO0oYwlQ= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38= google.golang.org/grpc v1.21.1/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= @@ -1928,8 +1937,8 @@ google.golang.org/grpc v1.45.0/go.mod h1:lN7owxKUQEqMfSyQikvvk5tf/6zMPsrK+ONuO11 google.golang.org/grpc v1.46.0/go.mod h1:vN9eftEi1UMyUsIF80+uQXhHjbXYbm0uXoFCACuMGWk= google.golang.org/grpc v1.46.2/go.mod h1:vN9eftEi1UMyUsIF80+uQXhHjbXYbm0uXoFCACuMGWk= google.golang.org/grpc v1.47.0/go.mod h1:vN9eftEi1UMyUsIF80+uQXhHjbXYbm0uXoFCACuMGWk= -google.golang.org/grpc v1.67.1 h1:zWnc1Vrcno+lHZCOofnIMvycFcc0QRGIzm9dhnDX68E= -google.golang.org/grpc v1.67.1/go.mod h1:1gLDyUQU7CTLJI90u3nXZ9ekeghjeM7pTDZlqFNg2AA= +google.golang.org/grpc v1.72.1 h1:HR03wO6eyZ7lknl75XlxABNVLLFc2PAb6mHlYh756mA= +google.golang.org/grpc v1.72.1/go.mod h1:wH5Aktxcg25y1I3w7H69nHfXdOG3UiadoBtjh3izSDM= google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.1.0/go.mod h1:6Kw0yEErY5E/yWrBtf03jp27GLLJujG4z/JK95pnjjw= google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= @@ -1946,8 +1955,8 @@ google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQ google.golang.org/protobuf v1.27.1/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= google.golang.org/protobuf v1.28.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= google.golang.org/protobuf v1.28.1/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= -google.golang.org/protobuf v1.36.5 h1:tPhr+woSbjfYvY6/GPufUoYizxw1cF/yFoxJ2fmpwlM= -google.golang.org/protobuf v1.36.5/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE= +google.golang.org/protobuf v1.36.6 h1:z1NpPI8ku2WgiWnf+t9wTPsn6eP1L7ksHUlkfLvd9xY= +google.golang.org/protobuf v1.36.6/go.mod h1:jduwjTPXsFjZGTmRluh+L6NjiWu7pchiJ2/5YcXBHnY= gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= diff --git a/ibm/service/drautomationservice/README.md b/ibm/service/drautomationservice/README.md index 043be27aa4..886ffce5b5 100644 --- a/ibm/service/drautomationservice/README.md +++ b/ibm/service/drautomationservice/README.md @@ -6,6 +6,6 @@ This area is primarily for IBM provider contributors and maintainers. For inform ## Handy Links * [Find out about contributing](../../../CONTRIBUTING.md) to the IBM provider! * IBM Provider Docs: [Home](https://registry.terraform.io/providers/IBM-Cloud/ibm/latest/docs) -* IBM Provider Docs: [One of the resources](https://registry.terraform.io/providers/IBM-Cloud/ibm/latest/docs/resources/pdr_managedr) +* IBM Provider Docs: [One of the resources](https://registry.terraform.io/providers/IBM-Cloud/ibm/latest/docs/resources/) * IBM API Docs: [IBM API Docs for ]() * IBM SDK: [IBM SDK for ](https://github.com/IBM/appconfiguration-go-admin-sdk/tree/master/drautomationservicev1) diff --git a/ibm/service/drautomationservice/data_source_ibm_pdr_get_dr_locations.go b/ibm/service/drautomationservice/data_source_ibm_pdr_get_dr_locations.go index 02f7b13019..ecb6088ba4 100644 --- a/ibm/service/drautomationservice/data_source_ibm_pdr_get_dr_locations.go +++ b/ibm/service/drautomationservice/data_source_ibm_pdr_get_dr_locations.go @@ -49,7 +49,7 @@ func DataSourceIBMPdrGetDrLocations() *schema.Resource { "name": &schema.Schema{ Type: schema.TypeString, Computed: true, - Description: "Name of the DR location.", + Description: "The name of the Power virtual server DR location .", }, }, }, @@ -69,6 +69,9 @@ func dataSourceIBMPdrGetDrLocationsRead(context context.Context, d *schema.Resou getDrLocationsOptions := &drautomationservicev1.GetDrLocationsOptions{} getDrLocationsOptions.SetInstanceID(d.Get("instance_id").(string)) + if _, ok := d.GetOk("accept_language"); ok { + getDrLocationsOptions.SetAcceptLanguage(d.Get("accept_language").(string)) + } getDrLocationsResponse, response, err := drAutomationServiceClient.GetDrLocationsWithContext(context, getDrLocationsOptions) @@ -88,10 +91,6 @@ func dataSourceIBMPdrGetDrLocationsRead(context context.Context, d *schema.Resou d.SetId(dataSourceIBMPdrGetDrLocationsID(d)) - if _, ok := d.GetOk("accept_language"); ok { - getDrLocationsOptions.SetAcceptLanguage(d.Get("accept_language").(string)) - } - drLocations := []map[string]interface{}{} for _, drLocationsItem := range getDrLocationsResponse.DrLocations { drLocationsItemMap, err := DataSourceIBMPdrGetDrLocationsDrLocationToMap(&drLocationsItem) // #nosec G601 diff --git a/ibm/service/drautomationservice/data_source_ibm_pdr_get_dr_summary_response.go b/ibm/service/drautomationservice/data_source_ibm_pdr_get_dr_summary_response.go index ff8182714a..d519cb3f78 100644 --- a/ibm/service/drautomationservice/data_source_ibm_pdr_get_dr_summary_response.go +++ b/ibm/service/drautomationservice/data_source_ibm_pdr_get_dr_summary_response.go @@ -52,12 +52,12 @@ func DataSourceIBMPdrGetDrSummaryResponse() *schema.Resource { "last_updated_orchestrator_deployment_time": &schema.Schema{ Type: schema.TypeString, Computed: true, - Description: "Deployment time of primary orchestrator VM.", + Description: "The deployment time of primary orchestrator VM.", }, "last_updated_standby_orchestrator_deployment_time": &schema.Schema{ Type: schema.TypeString, Computed: true, - Description: "Deployment time of StandBy orchestrator VM.", + Description: "The deployment time of StandBy orchestrator VM.", }, "latest_orchestrator_time": &schema.Schema{ Type: schema.TypeString, @@ -67,72 +67,72 @@ func DataSourceIBMPdrGetDrSummaryResponse() *schema.Resource { "location_id": &schema.Schema{ Type: schema.TypeString, Computed: true, - Description: "Location identifier.", + Description: "The unique identifier of location.", }, "mfa_enabled": &schema.Schema{ Type: schema.TypeString, Computed: true, - Description: "Multi Factor Authentication Enabled or not.", + Description: "indicates if Multi Factor Authentication is enabled or not.", }, "orch_ext_connectivity_status": &schema.Schema{ Type: schema.TypeString, Computed: true, - Description: "External connectivity status of the orchestrator.", + Description: "The external connectivity status of the orchestrator.", }, "orch_standby_node_addition_status": &schema.Schema{ Type: schema.TypeString, Computed: true, - Description: "Status of standby node addition.", + Description: "The status of standby node addition.", }, "orchestrator_cluster_message": &schema.Schema{ Type: schema.TypeString, Computed: true, - Description: "Message regarding orchestrator cluster status.", + Description: "The message regarding orchestrator cluster status.", }, "orchestrator_config_status": &schema.Schema{ Type: schema.TypeString, Computed: true, - Description: "Configuration status of the orchestrator.", + Description: "The configuration status of the orchestrator.", }, "orchestrator_group_leader": &schema.Schema{ Type: schema.TypeString, Computed: true, - Description: "Leader node of the orchestrator group.", + Description: "The leader node of the orchestrator group.", }, "orchestrator_location_type": &schema.Schema{ Type: schema.TypeString, Computed: true, - Description: "Type of orchestrator Location.", + Description: "The type of orchestrator Location.", }, "orchestrator_name": &schema.Schema{ Type: schema.TypeString, Computed: true, - Description: "Name of the primary orchestrator.", + Description: "The name of the primary orchestrator.", }, "orchestrator_status": &schema.Schema{ Type: schema.TypeString, Computed: true, - Description: "Status of the primary orchestrator.", + Description: "The status of the primary orchestrator.", }, "orchestrator_workspace_name": &schema.Schema{ Type: schema.TypeString, Computed: true, - Description: "Name of the orchestrator workspace.", + Description: "The name of the orchestrator workspace.", }, "proxy_ip": &schema.Schema{ Type: schema.TypeString, Computed: true, - Description: "IP address of the proxy.", + Description: "The IP address of the proxy.", }, "schematic_workspace_name": &schema.Schema{ Type: schema.TypeString, Computed: true, - Description: "Name of the schematic workspace.", + Description: "The name of the schematic workspace.", }, "schematic_workspace_status": &schema.Schema{ Type: schema.TypeString, Computed: true, - Description: "Status of the schematic workspace.", + Description: "The status of the schematic workspace.", }, "ssh_key_name": &schema.Schema{ Type: schema.TypeString, @@ -142,27 +142,27 @@ func DataSourceIBMPdrGetDrSummaryResponse() *schema.Resource { "standby_orchestrator_name": &schema.Schema{ Type: schema.TypeString, Computed: true, - Description: "Name of the standby orchestrator.", + Description: "The name of the standby orchestrator.", }, "standby_orchestrator_status": &schema.Schema{ Type: schema.TypeString, Computed: true, - Description: "Status of the standby orchestrator.", + Description: "The status of the standby orchestrator.", }, "standby_orchestrator_workspace_name": &schema.Schema{ Type: schema.TypeString, Computed: true, - Description: "Name of the standby orchestrator workspace.", + Description: "The name of the standby orchestrator workspace.", }, "transit_gateway_name": &schema.Schema{ Type: schema.TypeString, Computed: true, - Description: "Name of the transit gateway.", + Description: "The name of the transit gateway.", }, "vpc_name": &schema.Schema{ Type: schema.TypeString, Computed: true, - Description: "Name of the VPC.", + Description: "The name of the VPC.", }, }, }, @@ -176,72 +176,72 @@ func DataSourceIBMPdrGetDrSummaryResponse() *schema.Resource { "crn": &schema.Schema{ Type: schema.TypeString, Computed: true, - Description: "Cloud Resource Name identifier.", + Description: "The deployment crn.", }, "deployment_name": &schema.Schema{ Type: schema.TypeString, Computed: true, - Description: "Name of the deployment.", + Description: "The name of the deployment.", }, "description": &schema.Schema{ Type: schema.TypeString, Computed: true, - Description: "Description of the primary service.", + Description: "The Service description.", }, - "is_ksys_ha": &schema.Schema{ + "orchestrator_ha": &schema.Schema{ Type: schema.TypeBool, Computed: true, - Description: "Flag indicating if KSYS HA is enabled.", + Description: "The flag indicating whether orchestartor HA is enabled.", }, "plan_name": &schema.Schema{ Type: schema.TypeString, Computed: true, - Description: "plan name.", + Description: "The plan name.", }, "primary_ip_address": &schema.Schema{ Type: schema.TypeString, Computed: true, - Description: "IP address of the primary service.", + Description: "The service Orchestator primary IP address.", }, "primary_orchestrator_dashboard_url": &schema.Schema{ Type: schema.TypeString, Computed: true, - Description: "Primary Orchestrator Dashboard URL.", + Description: "The Primary Orchestrator Dashboard URL.", }, "recovery_location": &schema.Schema{ Type: schema.TypeString, Computed: true, - Description: "Location for disaster recovery.", + Description: "The disaster recovery location.", }, "resource_group": &schema.Schema{ Type: schema.TypeString, Computed: true, - Description: "Resource group name.", + Description: "The Resource group name.", }, "standby_description": &schema.Schema{ Type: schema.TypeString, Computed: true, - Description: "Description of the standby service.", + Description: "The standby orchestrator current status details.", }, "standby_ip_address": &schema.Schema{ Type: schema.TypeString, Computed: true, - Description: "IP address of the standby service.", + Description: "The service Orchestator standby IP address.", }, "standby_orchestrator_dashboard_url": &schema.Schema{ Type: schema.TypeString, Computed: true, - Description: "Standby Orchestrator Dashboard URL.", + Description: "The Standby Orchestrator Dashboard URL.", }, "standby_status": &schema.Schema{ Type: schema.TypeString, Computed: true, - Description: "Current status of the standby service.", + Description: "The standby orchestrator current status.", }, "status": &schema.Schema{ Type: schema.TypeString, Computed: true, - Description: "Current status of the primary service.", + Description: "The Status of the service.", }, }, }, @@ -352,7 +352,7 @@ func DataSourceIBMPdrGetDrSummaryResponseServiceDetailsToMap(model *drautomation modelMap["crn"] = *model.CRN modelMap["deployment_name"] = *model.DeploymentName modelMap["description"] = *model.Description - modelMap["is_ksys_ha"] = *model.IsKsysHa + modelMap["orchestrator_ha"] = *model. modelMap["plan_name"] = *model.PlanName modelMap["primary_ip_address"] = *model.PrimaryIPAddress modelMap["primary_orchestrator_dashboard_url"] = *model.PrimaryOrchestratorDashboardURL diff --git a/ibm/service/drautomationservice/data_source_ibm_pdr_get_dr_summary_response_test.go b/ibm/service/drautomationservice/data_source_ibm_pdr_get_dr_summary_response_test.go index 9633a55c34..3f69a735ee 100644 --- a/ibm/service/drautomationservice/data_source_ibm_pdr_get_dr_summary_response_test.go +++ b/ibm/service/drautomationservice/data_source_ibm_pdr_get_dr_summary_response_test.go @@ -114,7 +114,7 @@ func TestDataSourceIBMPdrGetDrSummaryResponseServiceDetailsToMap(t *testing.T) { model["crn"] = "testString" model["deployment_name"] = "testString" model["description"] = "testString" - model["is_ksys_ha"] = true + model["orchestrator_ha"] = true model["plan_name"] = "testString" model["primary_ip_address"] = "testString" model["primary_orchestrator_dashboard_url"] = "testString" @@ -133,7 +133,7 @@ func TestDataSourceIBMPdrGetDrSummaryResponseServiceDetailsToMap(t *testing.T) { model.CRN = core.StringPtr("testString") model.DeploymentName = core.StringPtr("testString") model.Description = core.StringPtr("testString") - model.IsKsysHa = core.BoolPtr(true) + model.OrchestratorHa = core.BoolPtr(true) model.PlanName = core.StringPtr("testString") model.PrimaryIPAddress = core.StringPtr("testString") model.PrimaryOrchestratorDashboardURL = core.StringPtr("testString") diff --git a/ibm/service/drautomationservice/data_source_ibm_pdr_get_event.go b/ibm/service/drautomationservice/data_source_ibm_pdr_get_event.go index 227aa103e8..a05a2f2370 100644 --- a/ibm/service/drautomationservice/data_source_ibm_pdr_get_event.go +++ b/ibm/service/drautomationservice/data_source_ibm_pdr_get_event.go @@ -3,7 +3,7 @@ /* * IBM OpenAPI Terraform Generator Version: 3.105.0-3c13b041-20250605-193116 - */ +*/ package drautomationservice diff --git a/ibm/service/drautomationservice/data_source_ibm_pdr_get_events.go b/ibm/service/drautomationservice/data_source_ibm_pdr_get_events.go index a35241a59c..4a20bf5a85 100644 --- a/ibm/service/drautomationservice/data_source_ibm_pdr_get_events.go +++ b/ibm/service/drautomationservice/data_source_ibm_pdr_get_events.go @@ -3,7 +3,7 @@ /* * IBM OpenAPI Terraform Generator Version: 3.105.0-3c13b041-20250605-193116 - */ +*/ package drautomationservice diff --git a/ibm/service/drautomationservice/data_source_ibm_pdr_get_machine_types.go b/ibm/service/drautomationservice/data_source_ibm_pdr_get_machine_types.go index 1ee30e449f..01925cbfaa 100644 --- a/ibm/service/drautomationservice/data_source_ibm_pdr_get_machine_types.go +++ b/ibm/service/drautomationservice/data_source_ibm_pdr_get_machine_types.go @@ -34,7 +34,7 @@ func DataSourceIBMPdrGetMachineTypes() *schema.Resource { "primary_workspace_name": &schema.Schema{ Type: schema.TypeString, Required: true, - Description: "Primary Workspace Name.", + Description: "The primary Power virtual server workspace name.", }, "accept_language": &schema.Schema{ Type: schema.TypeString, @@ -44,7 +44,7 @@ func DataSourceIBMPdrGetMachineTypes() *schema.Resource { "standby_workspace_name": &schema.Schema{ Type: schema.TypeString, Optional: true, - Description: "Standby Workspace Name.", + Description: "The standby Power virtual server workspace name.", }, "workspaces": { Type: schema.TypeList, @@ -80,19 +80,15 @@ func dataSourceIBMPdrGetMachineTypesRead(context context.Context, d *schema.Reso getMachineTypeOptions.SetInstanceID(d.Get("instance_id").(string)) getMachineTypeOptions.SetPrimaryWorkspaceName(d.Get("primary_workspace_name").(string)) + if _, ok := d.GetOk("accept_language"); ok { + getMachineTypeOptions.SetAcceptLanguage(d.Get("accept_language").(string)) + } if _, ok := d.GetOk("standby_workspace_name"); ok { getMachineTypeOptions.SetStandbyWorkspaceName(d.Get("standby_workspace_name").(string)) } - if _, ok := d.GetOk("accept_language"); ok { - getMachineTypeOptions.SetAcceptLanguage(d.Get("accept_language").(string)) - } machineTypesByWorkspace, response, err := drAutomationServiceClient.GetMachineTypeWithContext(context, getMachineTypeOptions) - fmt.Println("machineTypesByWorkspace", machineTypesByWorkspace) - fmt.Println("============================================================") - fmt.Println("response:", response) - fmt.Println("============================================================") if err != nil { detailedMsg := fmt.Sprintf("GetMachineTypeWithContext failed: %s", err.Error()) // Include HTTP status & raw body if available diff --git a/ibm/service/drautomationservice/data_source_ibm_pdr_get_machine_types_test.go b/ibm/service/drautomationservice/data_source_ibm_pdr_get_machine_types_test.go index 784fa40066..764b847793 100644 --- a/ibm/service/drautomationservice/data_source_ibm_pdr_get_machine_types_test.go +++ b/ibm/service/drautomationservice/data_source_ibm_pdr_get_machine_types_test.go @@ -3,7 +3,7 @@ /* * IBM OpenAPI Terraform Generator Version: 3.105.0-3c13b041-20250605-193116 - */ +*/ package drautomationservice_test diff --git a/ibm/service/drautomationservice/data_source_ibm_pdr_get_managed_vm_list.go b/ibm/service/drautomationservice/data_source_ibm_pdr_get_managed_vm_list.go index 83fe4bdab5..12940cc036 100644 --- a/ibm/service/drautomationservice/data_source_ibm_pdr_get_managed_vm_list.go +++ b/ibm/service/drautomationservice/data_source_ibm_pdr_get_managed_vm_list.go @@ -3,7 +3,7 @@ /* * IBM OpenAPI Terraform Generator Version: 3.105.0-3c13b041-20250605-193116 - */ +*/ package drautomationservice @@ -62,6 +62,9 @@ func dataSourceIBMPdrGetManagedVMListRead(context context.Context, d *schema.Res if _, ok := d.GetOk("accept_language"); ok { getDrManagedVMOptions.SetAcceptLanguage(d.Get("accept_language").(string)) } + if _, ok := d.GetOk("if_none_match"); ok { + getDrManagedVMOptions.SetIfNoneMatch(d.Get("if_none_match").(string)) + } managedVMMapResponse, response, err := drAutomationServiceClient.GetDrManagedVMWithContext(context, getDrManagedVMOptions) if err != nil { diff --git a/ibm/service/drautomationservice/data_source_ibm_pdr_get_managed_vm_list_test.go b/ibm/service/drautomationservice/data_source_ibm_pdr_get_managed_vm_list_test.go index 157c901ccd..5c337eb30b 100644 --- a/ibm/service/drautomationservice/data_source_ibm_pdr_get_managed_vm_list_test.go +++ b/ibm/service/drautomationservice/data_source_ibm_pdr_get_managed_vm_list_test.go @@ -53,8 +53,8 @@ func TestDataSourceIBMPdrGetManagedVMListManagedVMDetailsToMap(t *testing.T) { model["memory"] = "4" model["region"] = "lon04" model["vm_name"] = "example_vm" - model["workgroup_name"] = "Example_Workgroup" - model["workspace_name"] = "Example_Workspace" + model["workgroup_name"] = "Workgroup1" + model["workspace_name"] = "Workspace_dallas01" assert.Equal(t, result, model) } @@ -66,8 +66,8 @@ func TestDataSourceIBMPdrGetManagedVMListManagedVMDetailsToMap(t *testing.T) { model.Memory = core.StringPtr("4") model.Region = core.StringPtr("lon04") model.VMName = core.StringPtr("example_vm") - model.WorkgroupName = core.StringPtr("Example_Workgroup") - model.WorkspaceName = core.StringPtr("Example_Workspace") + model.WorkgroupName = core.StringPtr("Workgroup1") + model.WorkspaceName = core.StringPtr("Workspace_dallas01") result, err := drautomationservice.DataSourceIBMPdrGetManagedVMListManagedVMDetailsToMap(model) assert.Nil(t, err) diff --git a/ibm/service/drautomationservice/data_source_ibm_pdr_get_powervs_workspace.go b/ibm/service/drautomationservice/data_source_ibm_pdr_get_powervs_workspace.go index a066efe81f..e036b8ab77 100644 --- a/ibm/service/drautomationservice/data_source_ibm_pdr_get_powervs_workspace.go +++ b/ibm/service/drautomationservice/data_source_ibm_pdr_get_powervs_workspace.go @@ -55,7 +55,7 @@ func DataSourceIBMPdrGetPowervsWorkspace() *schema.Resource { "details": &schema.Schema{ Type: schema.TypeList, Computed: true, - Description: "Detailed information of the standby DR workspace.", + Description: "The detailed information of the standby DR workspace.", Elem: &schema.Resource{ Schema: map[string]*schema.Schema{ "crn": &schema.Schema{ @@ -69,12 +69,12 @@ func DataSourceIBMPdrGetPowervsWorkspace() *schema.Resource { "id": &schema.Schema{ Type: schema.TypeString, Computed: true, - Description: "Unique identifier of the standby workspace.", + Description: "The unique identifier of the standby workspace.", }, "location": &schema.Schema{ Type: schema.TypeList, Computed: true, - Description: "Location information of the standby workspace.", + Description: "The location information of the standby workspace.", Elem: &schema.Resource{ Schema: map[string]*schema.Schema{ "region": &schema.Schema{ @@ -98,12 +98,12 @@ func DataSourceIBMPdrGetPowervsWorkspace() *schema.Resource { "name": &schema.Schema{ Type: schema.TypeString, Computed: true, - Description: "Name of the standby workspace.", + Description: "The name of the standby workspace.", }, "status": &schema.Schema{ Type: schema.TypeString, Computed: true, - Description: "Current status of the standby workspace.", + Description: "The status of the standby workspace.", }, }, }, @@ -116,7 +116,7 @@ func DataSourceIBMPdrGetPowervsWorkspace() *schema.Resource { "dr_workspaces": &schema.Schema{ Type: schema.TypeList, Computed: true, - Description: "List of primary disaster recovery workspaces.", + Description: "The list of primary disaster recovery workspaces.", Elem: &schema.Resource{ Schema: map[string]*schema.Schema{ "default": &schema.Schema{ @@ -127,7 +127,7 @@ func DataSourceIBMPdrGetPowervsWorkspace() *schema.Resource { "details": &schema.Schema{ Type: schema.TypeList, Computed: true, - Description: "Detailed information about the DR workspace.", + Description: "The detailed information about the DR workspace.", Elem: &schema.Resource{ Schema: map[string]*schema.Schema{ "crn": &schema.Schema{ @@ -141,12 +141,12 @@ func DataSourceIBMPdrGetPowervsWorkspace() *schema.Resource { "id": &schema.Schema{ Type: schema.TypeString, Computed: true, - Description: "Unique identifier of the DR workspace.", + Description: "The unique identifier of the DR workspace.", }, "location": &schema.Schema{ Type: schema.TypeList, Computed: true, - Description: "Location information of the DR workspace.", + Description: "The location information of the DR workspace.", Elem: &schema.Resource{ Schema: map[string]*schema.Schema{ "region": &schema.Schema{ @@ -170,12 +170,12 @@ func DataSourceIBMPdrGetPowervsWorkspace() *schema.Resource { "name": &schema.Schema{ Type: schema.TypeString, Computed: true, - Description: "Name of the DR workspace.", + Description: "The name of the DR workspace.", }, "status": &schema.Schema{ Type: schema.TypeString, Computed: true, - Description: "Current status of the DR workspace.", + Description: "The status of the DR workspace.", }, }, }, diff --git a/ibm/service/drautomationservice/data_source_ibm_pdr_last_operation.go b/ibm/service/drautomationservice/data_source_ibm_pdr_last_operation.go index ad04fa16d4..92820c4e98 100644 --- a/ibm/service/drautomationservice/data_source_ibm_pdr_last_operation.go +++ b/ibm/service/drautomationservice/data_source_ibm_pdr_last_operation.go @@ -3,7 +3,7 @@ /* * IBM OpenAPI Terraform Generator Version: 3.105.0-3c13b041-20250605-193116 - */ +*/ package drautomationservice @@ -39,32 +39,27 @@ func DataSourceIBMPdrLastOperation() *schema.Resource { "crn": &schema.Schema{ Type: schema.TypeString, Computed: true, - Description: "Cloud Resource Name (CRN) of the service instance.", + Description: "The service instance crn.", }, "deployment_name": &schema.Schema{ Type: schema.TypeString, Computed: true, - Description: "Name of the service instance deployment.", - }, - "is_ksys_ha": &schema.Schema{ - Type: schema.TypeBool, - Computed: true, - Description: "Indicates whether high availability (HA) is enabled for the orchestrator.", + Description: "The name of the service instance deployment.", }, "last_updated_orchestrator_deployment_time": &schema.Schema{ Type: schema.TypeString, Computed: true, - Description: "Deployment time of primary orchestrator VM.", + Description: "The deployment time of primary orchestrator VM.", }, "last_updated_standby_orchestrator_deployment_time": &schema.Schema{ Type: schema.TypeString, Computed: true, - Description: "Deployment time of StandBy orchestrator VM.", + Description: "The deployment time of StandBy orchestrator VM.", }, "mfa_enabled": &schema.Schema{ Type: schema.TypeString, Computed: true, - Description: "Multiple Factor Authentication Enabled or not.", + Description: "Indicated whether multi factor authentication is ennabled or not.", }, "orch_ext_connectivity_status": &schema.Schema{ Type: schema.TypeString, @@ -74,67 +69,72 @@ func DataSourceIBMPdrLastOperation() *schema.Resource { "orch_standby_node_addtion_status": &schema.Schema{ Type: schema.TypeString, Computed: true, - Description: "Health or informational message about the orchestrator cluster.", + Description: "The status of standby node in the Orchestrator cluster.", }, "orchestrator_cluster_message": &schema.Schema{ Type: schema.TypeString, Computed: true, - Description: "Current status of the primary orchestrator VM.", + Description: "The current status of the primary orchestrator VM.", }, "orchestrator_config_status": &schema.Schema{ Type: schema.TypeString, Computed: true, - Description: "Configuration status of the orchestrator cluster.", + Description: "The configuration status of the orchestrator cluster.", + }, + "orchestrator_ha": &schema.Schema{ + Type: schema.TypeBool, + Computed: true, + Description: "Indicates whether high availability (HA) is enabled for the orchestrator.", }, "plan_name": &schema.Schema{ Type: schema.TypeString, Computed: true, - Description: "Name of the Plan.", + Description: "The name of the DR Automation plan.", }, "primary_description": &schema.Schema{ Type: schema.TypeString, Computed: true, - Description: "Detailed status message for the primary orchestrator VM.", + Description: "Indicates the progress details of primary orchestrator creation.", }, "primary_ip_address": &schema.Schema{ Type: schema.TypeString, Computed: true, - Description: "IP address of the primary orchestrator VM.", + Description: "The IP address of the primary orchestrator VM.", }, "primary_orchestrator_status": &schema.Schema{ Type: schema.TypeString, Computed: true, - Description: "Configuration status of the orchestrator cluster.", + Description: "The configuration status of the orchestrator cluster.", }, "recovery_location": &schema.Schema{ Type: schema.TypeString, Computed: true, - Description: "Disaster recovery location associated with the instance.", + Description: "The disaster recovery location associated with the instance.", }, "resource_group": &schema.Schema{ Type: schema.TypeString, Computed: true, - Description: "Resource group to which the service instance belongs.", + Description: "The resource group to which the service instance belongs.", }, "standby_description": &schema.Schema{ Type: schema.TypeString, Computed: true, - Description: "Detailed status message for the standby orchestrator VM.", + Description: "Indicates the progress details of primary orchestrator creation.", }, "standby_ip_address": &schema.Schema{ Type: schema.TypeString, Computed: true, - Description: "IP address of the standby orchestrator VM.", + Description: "The IP address of the standby orchestrator VM.", }, "standby_status": &schema.Schema{ Type: schema.TypeString, Computed: true, - Description: "Current state of the standby orchestrator VM.", + Description: "The current state of the standby orchestrator.", }, "status": &schema.Schema{ Type: schema.TypeString, Computed: true, - Description: "Overall status of the service instance.", + Description: "The current state of the primary orchestrator.", }, }, } @@ -183,10 +183,6 @@ func dataSourceIBMPdrLastOperationRead(context context.Context, d *schema.Resour return flex.DiscriminatedTerraformErrorf(err, fmt.Sprintf("Error setting deployment_name: %s", err), "(Data) ibm_pdr_last_operation", "read", "set-deployment_name").GetDiag() } - if err = d.Set("is_ksys_ha", serviceInstanceStatus.IsKsysHa); err != nil { - return flex.DiscriminatedTerraformErrorf(err, fmt.Sprintf("Error setting is_ksys_ha: %s", err), "(Data) ibm_pdr_last_operation", "read", "set-is_ksys_ha").GetDiag() - } - if err = d.Set("last_updated_orchestrator_deployment_time", flex.DateTimeToString(serviceInstanceStatus.LastUpdatedOrchestratorDeploymentTime)); err != nil { return flex.DiscriminatedTerraformErrorf(err, fmt.Sprintf("Error setting last_updated_orchestrator_deployment_time: %s", err), "(Data) ibm_pdr_last_operation", "read", "set-last_updated_orchestrator_deployment_time").GetDiag() } @@ -217,6 +213,10 @@ func dataSourceIBMPdrLastOperationRead(context context.Context, d *schema.Resour return flex.DiscriminatedTerraformErrorf(err, fmt.Sprintf("Error setting orchestrator_config_status: %s", err), "(Data) ibm_pdr_last_operation", "read", "set-orchestrator_config_status").GetDiag() } + if err = d.Set("orchestrator_ha", serviceInstanceStatus.OrchestratorHa); err != nil { + return flex.DiscriminatedTerraformErrorf(err, fmt.Sprintf("Error setting orchestrator_ha: %s", err), "(Data) ibm_pdr_last_operation", "read", "set-orchestrator_ha").GetDiag() + } + if err = d.Set("plan_name", serviceInstanceStatus.PlanName); err != nil { return flex.DiscriminatedTerraformErrorf(err, fmt.Sprintf("Error setting plan_name: %s", err), "(Data) ibm_pdr_last_operation", "read", "set-plan_name").GetDiag() } diff --git a/ibm/service/drautomationservice/data_source_ibm_pdr_last_operation_test.go b/ibm/service/drautomationservice/data_source_ibm_pdr_last_operation_test.go index c6eaeab333..ae3c45b5b7 100644 --- a/ibm/service/drautomationservice/data_source_ibm_pdr_last_operation_test.go +++ b/ibm/service/drautomationservice/data_source_ibm_pdr_last_operation_test.go @@ -28,13 +28,13 @@ func TestAccIBMPdrLastOperationDataSourceBasic(t *testing.T) { resource.TestCheckResourceAttrSet("data.ibm_pdr_last_operation.pdr_last_operation_instance", "instance_id"), resource.TestCheckResourceAttrSet("data.ibm_pdr_last_operation.pdr_last_operation_instance", "crn"), resource.TestCheckResourceAttrSet("data.ibm_pdr_last_operation.pdr_last_operation_instance", "deployment_name"), - resource.TestCheckResourceAttrSet("data.ibm_pdr_last_operation.pdr_last_operation_instance", "is_ksys_ha"), resource.TestCheckResourceAttrSet("data.ibm_pdr_last_operation.pdr_last_operation_instance", "last_updated_orchestrator_deployment_time"), resource.TestCheckResourceAttrSet("data.ibm_pdr_last_operation.pdr_last_operation_instance", "last_updated_standby_orchestrator_deployment_time"), resource.TestCheckResourceAttrSet("data.ibm_pdr_last_operation.pdr_last_operation_instance", "mfa_enabled"), resource.TestCheckResourceAttrSet("data.ibm_pdr_last_operation.pdr_last_operation_instance", "orch_standby_node_addtion_status"), resource.TestCheckResourceAttrSet("data.ibm_pdr_last_operation.pdr_last_operation_instance", "orchestrator_cluster_message"), resource.TestCheckResourceAttrSet("data.ibm_pdr_last_operation.pdr_last_operation_instance", "orchestrator_config_status"), + resource.TestCheckResourceAttrSet("data.ibm_pdr_last_operation.pdr_last_operation_instance", "orchestrator_ha"), resource.TestCheckResourceAttrSet("data.ibm_pdr_last_operation.pdr_last_operation_instance", "plan_name"), resource.TestCheckResourceAttrSet("data.ibm_pdr_last_operation.pdr_last_operation_instance", "primary_description"), resource.TestCheckResourceAttrSet("data.ibm_pdr_last_operation.pdr_last_operation_instance", "primary_ip_address"), diff --git a/ibm/service/drautomationservice/dra-go-sdk b/ibm/service/drautomationservice/dra-go-sdk new file mode 160000 index 0000000000..45cba61fcf --- /dev/null +++ b/ibm/service/drautomationservice/dra-go-sdk @@ -0,0 +1 @@ +Subproject commit 45cba61fcfdf94a06b7488e91016e8f4ded04814 diff --git a/ibm/service/drautomationservice/resource_ibm_pdr_managedr.go b/ibm/service/drautomationservice/resource_ibm_pdr_managedr.go index cd54aa5cd2..d95868d168 100644 --- a/ibm/service/drautomationservice/resource_ibm_pdr_managedr.go +++ b/ibm/service/drautomationservice/resource_ibm_pdr_managedr.go @@ -31,6 +31,10 @@ func ResourceIbmPdrManagedr() *schema.Resource { DeleteContext: resourceIbmPdrManagedrDelete, Importer: &schema.ResourceImporter{}, + Timeouts: &schema.ResourceTimeout{ + Create: schema.DefaultTimeout(90 * time.Minute), + }, + Schema: map[string]*schema.Schema{ "instance_id": &schema.Schema{ Type: schema.TypeString, @@ -94,6 +98,25 @@ func ResourceIbmPdrManagedr() *schema.Resource { ForceNew: true, Optional: true, }, + "client_id": { + Type: schema.TypeString, + Optional: true, + ForceNew: true, + Description: "Client ID for MFA Authentication.", + }, + "client_secret": { + Type: schema.TypeString, + Optional: true, + ForceNew: true, + Sensitive: true, + Description: "Client Secret for MFA Authentication.", + }, + "tenant_name": { + Type: schema.TypeString, + Optional: true, + ForceNew: true, + Description: "Tenant Name for MFA Authentication.", + }, "orchestrator_ha": { Type: schema.TypeBool, Optional: true, @@ -170,11 +193,6 @@ func ResourceIbmPdrManagedr() *schema.Resource { Optional: true, ForceNew: true, }, - "ssh_public_key": { - Type: schema.TypeString, - Optional: true, - ForceNew: true, - }, "standby_machine_type": { Type: schema.TypeString, Optional: true, @@ -225,7 +243,10 @@ func ResourceIbmPdrManagedrValidator() *validate.ResourceValidator { return &resourceValidator } -func resourceIbmPdrManagedrCreate(context context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { +func resourceIbmPdrManagedrCreate(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { + ctx, cancel := context.WithTimeout(ctx, 90*time.Minute) + defer cancel() + drAutomationServiceClient, err := meta.(conns.ClientSession).DrAutomationServiceV1() if err != nil { tfErr := flex.DiscriminatedTerraformErrorf(err, err.Error(), "ibm_pdr_managedr", "create", "initialize-client") @@ -274,6 +295,15 @@ func resourceIbmPdrManagedrCreate(context context.Context, d *schema.ResourceDat if _, ok := d.GetOk("region_id"); ok { createManageDrOptions.SetRegionID(d.Get("region_id").(string)) } + if _, ok := d.GetOk("client_id"); ok { + createManageDrOptions.SetClientID(d.Get("client_id").(string)) + } + if _, ok := d.GetOk("client_secret"); ok { + createManageDrOptions.SetClientSecret(d.Get("client_secret").(string)) + } + if _, ok := d.GetOk("tenant_name"); ok { + createManageDrOptions.SetTenantName(d.Get("tenant_name").(string)) + } if _, ok := d.GetOk("resource_instance"); ok { createManageDrOptions.SetResourceInstance(d.Get("resource_instance").(string)) } @@ -317,7 +347,7 @@ func resourceIbmPdrManagedrCreate(context context.Context, d *schema.ResourceDat createManageDrOptions.SetAcceptsIncomplete(d.Get("accepts_incomplete").(bool)) } - serviceInstanceManageDr, response, err := drAutomationServiceClient.CreateManageDrWithContext(context, createManageDrOptions) + serviceInstanceManageDr, response, err := drAutomationServiceClient.CreateManageDrWithContext(ctx, createManageDrOptions) if err != nil { detailedMsg := fmt.Sprintf("CreateManageDrWithContext failed: %s", err.Error()) // Include HTTP status & raw body if available @@ -337,7 +367,7 @@ func resourceIbmPdrManagedrCreate(context context.Context, d *schema.ResourceDat instanceID := *createManageDrOptions.InstanceID const ( pollInterval = 1 * time.Minute - maxWaitTime = 75 * time.Minute // optional, can extend as needed + maxWaitTime = 90 * time.Minute // optional, can extend as needed ) timeout := time.After(maxWaitTime) ticker := time.NewTicker(pollInterval) @@ -357,7 +387,7 @@ func resourceIbmPdrManagedrCreate(context context.Context, d *schema.ResourceDat return tfErr.GetDiag() case <-ticker.C: - status, _, _, statusErr, errormessage := checkLastOperationStatus(context, drAutomationServiceClient, instanceID) + status, _, _, statusErr, _ := checkLastOperationStatus(ctx, drAutomationServiceClient, instanceID) if statusErr != nil { tfErr := flex.TerraformErrorf(statusErr, fmt.Sprintf("GetLastOperation failed: %s", statusErr.Error()), "ibm_pdr_managedr", "create") log.Printf("[DEBUG]\n%s", tfErr.GetDebugMessage()) @@ -365,16 +395,16 @@ func resourceIbmPdrManagedrCreate(context context.Context, d *schema.ResourceDat return tfErr.GetDiag() } - log.Printf("[INFO] Current Last Operation status for instance %s: %s", instanceID, status) + log.Printf("[INFO] Current Last Operation status for instance %s: %s", instanceID, *status.Status) - switch strings.ToLower(status) { + switch strings.ToLower(*status.Status) { case "active": log.Printf("[INFO] Manage DR operation completed successfully for instance %s", instanceID) ticker.Stop() - return resourceIbmPdrManagedrRead(context, d, meta) + return resourceIbmPdrManagedrRead(ctx, d, meta) case "fail", "failed", "error": - errMsg := fmt.Sprintf("Manage DR operation failed for instance %s (status: %s) and error message: %s", instanceID, status, errormessage) + errMsg := fmt.Sprintf("Manage DR operation failed for instance %s and error message: %s", instanceID, *status.PrimaryDescription) tfErr := flex.TerraformErrorf(fmt.Errorf("%s", errMsg), errMsg, "ibm_pdr_managedr", "create") log.Printf("[ERROR] %s", errMsg) @@ -382,7 +412,7 @@ func resourceIbmPdrManagedrCreate(context context.Context, d *schema.ResourceDat return tfErr.GetDiag() default: - log.Printf("[DEBUG] Manage DR still in progress (status: %s)... retrying in %v", status, pollInterval) + log.Printf("[DEBUG] Manage DR still in progress... retrying in %v", pollInterval) } } } @@ -397,7 +427,7 @@ func resourceIbmPdrManagedrCreate(context context.Context, d *schema.ResourceDat return tfErr.GetDiag() case <-ticker.C: - status, _, standbyStatus, statusErr, errormessage := checkLastOperationStatus(context, drAutomationServiceClient, instanceID) + status, _, standbyStatus, statusErr, _ := checkLastOperationStatus(ctx, drAutomationServiceClient, instanceID) if statusErr != nil { tfErr := flex.TerraformErrorf(statusErr, fmt.Sprintf("GetLastOperation failed: %s", statusErr.Error()), "ibm_pdr_managedr", "create") log.Printf("[DEBUG]\n%s", tfErr.GetDebugMessage()) @@ -405,19 +435,20 @@ func resourceIbmPdrManagedrCreate(context context.Context, d *schema.ResourceDat return tfErr.GetDiag() } - log.Printf("[INFO] Current Last Operation status for instance %s: %s", instanceID, status) - - switch strings.ToLower(status) { + switch strings.ToLower(*status.Status) { case "active": if strings.ToLower(standbyStatus) == "active" { log.Printf("[INFO] Manage DR operation completed successfully for instance %s (both primary and standby active)", instanceID) ticker.Stop() - return resourceIbmPdrManagedrRead(context, d, meta) + return resourceIbmPdrManagedrRead(ctx, d, meta) } if strings.ToLower(standbyStatus) == "failed" { - log.Printf("[INFO] Standby Orchestrator Failed for instance %s", instanceID) + errMsg := fmt.Sprintf("Manage DR operation failed for instance %s and error message: %s", instanceID, *status.StandbyDescription) + tfErr := flex.TerraformErrorf(fmt.Errorf("%s", errMsg), errMsg, "ibm_pdr_managedr", "create") + + log.Printf("[ERROR] %s", errMsg) ticker.Stop() - return resourceIbmPdrManagedrRead(context, d, meta) + return tfErr.GetDiag() } // If standby still initializing @@ -426,7 +457,7 @@ func resourceIbmPdrManagedrCreate(context context.Context, d *schema.ResourceDat continue case "fail", "failed", "error": - errMsg := fmt.Sprintf("Manage DR operation failed for instance %s (status: %s) and error message: %s", instanceID, status, errormessage) + errMsg := fmt.Sprintf("Manage DR operation failed for instance %s and error message: %s", instanceID, *status.PrimaryDescription) tfErr := flex.TerraformErrorf(fmt.Errorf("%s", errMsg), errMsg, "ibm_pdr_managedr", "create") log.Printf("[ERROR] %s", errMsg) @@ -434,7 +465,7 @@ func resourceIbmPdrManagedrCreate(context context.Context, d *schema.ResourceDat return tfErr.GetDiag() default: - log.Printf("[DEBUG] Manage DR still in progress (status: %s)... retrying in %v", status, pollInterval) + log.Printf("[DEBUG] Manage DR still in progress ... retrying in %v", pollInterval) } } } @@ -507,17 +538,17 @@ func resourceIbmPdrManagedrDelete(context context.Context, d *schema.ResourceDat return nil } -func checkLastOperationStatus(ctx context.Context, client *drautomationservicev1.DrAutomationServiceV1, instanceID string) (string, string, string, error, error) { +func checkLastOperationStatus(ctx context.Context, client *drautomationservicev1.DrAutomationServiceV1, instanceID string) (*drautomationservicev1.ServiceInstanceStatus, string, string, error, error) { opts := &drautomationservicev1.GetLastOperationOptions{} opts.SetInstanceID(instanceID) statusResponse, _, err := client.GetLastOperationWithContext(ctx, opts) if err != nil { - return "", "", "", err, nil + return nil, "", "", err, nil } if statusResponse.Status == nil { - return *statusResponse.Status, "", "", fmt.Errorf("received nil status for instance %s", instanceID), nil + return statusResponse, "", "", fmt.Errorf("received nil status for instance %s", instanceID), nil } status := strings.ToLower(*statusResponse.Status) @@ -528,19 +559,19 @@ func checkLastOperationStatus(ctx context.Context, client *drautomationservicev1 if status == "failed" { switch { case primaryStatus == "failed" && standbyStatus == "failed": - return status, primaryStatus, standbyStatus, nil, fmt.Errorf("%s \n %s", *statusResponse.PrimaryDescription, *statusResponse.StandbyDescription) + return statusResponse, primaryStatus, standbyStatus, nil, fmt.Errorf("%s \n %s", *statusResponse.PrimaryDescription, *statusResponse.StandbyDescription) case primaryStatus == "failed" && (standbyStatus == "" || standbyStatus == "na"): - return status, primaryStatus, standbyStatus, nil, fmt.Errorf("%s", *statusResponse.PrimaryDescription) + return statusResponse, primaryStatus, standbyStatus, nil, fmt.Errorf("%s", *statusResponse.PrimaryDescription) case primaryStatus == "active" && (standbyStatus != "" || standbyStatus == "failed"): - return status, primaryStatus, standbyStatus, nil, fmt.Errorf("%s \n %s", *statusResponse.PrimaryDescription, *statusResponse.StandbyDescription) + return statusResponse, primaryStatus, standbyStatus, nil, fmt.Errorf("%s \n %s", *statusResponse.PrimaryDescription, *statusResponse.StandbyDescription) case primaryStatus == "failed": - return status, primaryStatus, standbyStatus, nil, fmt.Errorf("primary orchestrator failed for instance %s", instanceID) + return statusResponse, primaryStatus, standbyStatus, nil, fmt.Errorf("primary orchestrator failed for instance %s", instanceID) case standbyStatus == "failed": - return status, primaryStatus, standbyStatus, nil, fmt.Errorf("standby orchestrator failed for instance %s", instanceID) + return statusResponse, primaryStatus, standbyStatus, nil, fmt.Errorf("standby orchestrator failed for instance %s", instanceID) default: - return status, primaryStatus, standbyStatus, nil, fmt.Errorf("operation failed for instance %s with unknown cause", instanceID) + return statusResponse, primaryStatus, standbyStatus, nil, fmt.Errorf("operation failed for instance %s with unknown cause", instanceID) } } - return *statusResponse.Status, primaryStatus, standbyStatus, nil, nil + return statusResponse, primaryStatus, standbyStatus, nil, nil } diff --git a/website/docs/d/pdr_get_deployment_status.html.markdown b/website/docs/d/pdr_get_deployment_status.html.markdown deleted file mode 100755 index 2d48fc1b3c..0000000000 --- a/website/docs/d/pdr_get_deployment_status.html.markdown +++ /dev/null @@ -1,45 +0,0 @@ ---- -layout: "ibm" -page_title: "IBM : ibm_pdr_get_deployment_status" -description: |- - Get information about pdr_get_deployment_status -subcategory: "DrAutomation Service" ---- - -# ibm_pdr_get_deployment_status - -Provides a read-only data source to retrieve information about pdr_get_deployment_status. You can then reference the fields of the data source in other resources within the same configuration by using interpolation syntax. - -## Example Usage - -```hcl -data "ibm_pdr_get_deployment_status" "pdr_get_deployment_status" { - instance_id = "crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::" -} -``` - -## Argument Reference - -You can specify the following arguments for this data source. - -* `instance_id` - (Required, Forces new resource, String) instance id of instance to provision. - -## Attribute Reference - -After your data source is created, you can read values from the following attributes. - -* `id` - The unique identifier of the pdr_get_deployment_status. -* `orch_ext_connectivity_status` - (String) External connectivity status of the orchestrator cluster. -* `orch_standby_node_addition_status` - (String) Status of the standby node addition process. -* `orchestrator_cluster_message` - (String) Cluster status message. -* `orchestrator_cluster_type` - (String) Type of orchestrator cluster. -* `orchestrator_config_status` - (String) Configuration status of the orchestrator. -* `orchestrator_group_leader` - (String) Name of the orchestrator acting as the cluster leader. -* `orchestrator_name` - (String) Name of the primary orchestrator. -* `orchestrator_status` - (String) Status of the primary orchestrator. -* `schematic_workspace_name` - (String) Name of the schematic workspace. -* `schematic_workspace_status` - (String) Status of the schematic workspace. -* `ssh_key_name` - (String) Name of the SSH key associated with the orchestrator. -* `standby_orchestrator_name` - (String) Name of the standby orchestrator. -* `standby_orchestrator_status` - (String) Status of the standby orchestrator. - diff --git a/website/docs/d/pdr_get_dr_locations.html.markdown b/website/docs/d/pdr_get_dr_locations.html.markdown index 83b441f489..d1f92f8d1a 100644 --- a/website/docs/d/pdr_get_dr_locations.html.markdown +++ b/website/docs/d/pdr_get_dr_locations.html.markdown @@ -33,5 +33,5 @@ After your data source is created, you can read values from the following attrib * `dr_locations` - (List) List of disaster recovery locations available for the service. Nested schema for **dr_locations**: * `id` - (String) Unique identifier of the DR location. - * `name` - (String) Name of the DR location. + * `name` - (String) The name of the Power virtual server DR location . diff --git a/website/docs/d/pdr_get_dr_summary_response.html.markdown b/website/docs/d/pdr_get_dr_summary_response.html.markdown index 7a9771a664..f8b37ab6af 100755 --- a/website/docs/d/pdr_get_dr_summary_response.html.markdown +++ b/website/docs/d/pdr_get_dr_summary_response.html.markdown @@ -33,43 +33,43 @@ After your data source is created, you can read values from the following attrib * `managed_vm_list` - (Map) A flexible schema placeholder to allow any JSON value (aligns with interface{} in Go). * `orchestrator_details` - (List) Contains details about the orchestrator configuration. Nested schema for **orchestrator_details**: - * `last_updated_orchestrator_deployment_time` - (String) Deployment time of primary orchestrator VM. - * `last_updated_standby_orchestrator_deployment_time` - (String) Deployment time of StandBy orchestrator VM. + * `last_updated_orchestrator_deployment_time` - (String) The deployment time of primary orchestrator VM. + * `last_updated_standby_orchestrator_deployment_time` - (String) The deployment time of StandBy orchestrator VM. * `latest_orchestrator_time` - (String) Latest Orchestrator Time in COS. - * `location_id` - (String) Location identifier. - * `mfa_enabled` - (String) Multi Factor Authentication Enabled or not. - * `orch_ext_connectivity_status` - (String) External connectivity status of the orchestrator. - * `orch_standby_node_addition_status` - (String) Status of standby node addition. - * `orchestrator_cluster_message` - (String) Message regarding orchestrator cluster status. - * `orchestrator_config_status` - (String) Configuration status of the orchestrator. - * `orchestrator_group_leader` - (String) Leader node of the orchestrator group. - * `orchestrator_location_type` - (String) Type of orchestrator Location. - * `orchestrator_name` - (String) Name of the primary orchestrator. - * `orchestrator_status` - (String) Status of the primary orchestrator. - * `orchestrator_workspace_name` - (String) Name of the orchestrator workspace. - * `proxy_ip` - (String) IP address of the proxy. - * `schematic_workspace_name` - (String) Name of the schematic workspace. - * `schematic_workspace_status` - (String) Status of the schematic workspace. + * `location_id` - (String) The unique identifier of location. + * `mfa_enabled` - (String) indicates if Multi Factor Authentication is enabled or not. + * `orch_ext_connectivity_status` - (String) The external connectivity status of the orchestrator. + * `orch_standby_node_addition_status` - (String) The status of standby node addition. + * `orchestrator_cluster_message` - (String) The message regarding orchestrator cluster status. + * `orchestrator_config_status` - (String) The configuration status of the orchestrator. + * `orchestrator_group_leader` - (String) The leader node of the orchestrator group. + * `orchestrator_location_type` - (String) The type of orchestrator Location. + * `orchestrator_name` - (String) The name of the primary orchestrator. + * `orchestrator_status` - (String) The status of the primary orchestrator. + * `orchestrator_workspace_name` - (String) The name of the orchestrator workspace. + * `proxy_ip` - (String) The IP address of the proxy. + * `schematic_workspace_name` - (String) The name of the schematic workspace. + * `schematic_workspace_status` - (String) The status of the schematic workspace. * `ssh_key_name` - (String) SSH key name used for the orchestrator. - * `standby_orchestrator_name` - (String) Name of the standby orchestrator. - * `standby_orchestrator_status` - (String) Status of the standby orchestrator. - * `standby_orchestrator_workspace_name` - (String) Name of the standby orchestrator workspace. - * `transit_gateway_name` - (String) Name of the transit gateway. - * `vpc_name` - (String) Name of the VPC. + * `standby_orchestrator_name` - (String) The name of the standby orchestrator. + * `standby_orchestrator_status` - (String) The status of the standby orchestrator. + * `standby_orchestrator_workspace_name` - (String) The name of the standby orchestrator workspace. + * `transit_gateway_name` - (String) The name of the transit gateway. + * `vpc_name` - (String) The name of the VPC. * `service_details` - (List) Contains details about the DR automation service. Nested schema for **service_details**: - * `crn` - (String) Cloud Resource Name identifier. - * `deployment_name` - (String) Name of the deployment. - * `description` - (String) Description of the primary service. - * `is_ksys_ha` - (Boolean) Flag indicating if KSYS HA is enabled. - * `plan_name` - (String) plan name. - * `primary_ip_address` - (String) IP address of the primary service. - * `primary_orchestrator_dashboard_url` - (String) Primary Orchestrator Dashboard URL. - * `recovery_location` - (String) Location for disaster recovery. - * `resource_group` - (String) Resource group name. - * `standby_description` - (String) Description of the standby service. - * `standby_ip_address` - (String) IP address of the standby service. - * `standby_orchestrator_dashboard_url` - (String) Standby Orchestrator Dashboard URL. - * `standby_status` - (String) Current status of the standby service. - * `status` - (String) Current status of the primary service. + * `crn` - (String) The deployment crn. + * `deployment_name` - (String) The name of the deployment. + * `description` - (String) The Service description. + * `orchestrator_ha` - (Boolean) The flag indicating whether orchestartor HA is enabled. + * `plan_name` - (String) The plan name. + * `primary_ip_address` - (String) The service Orchestator primary IP address. + * `primary_orchestrator_dashboard_url` - (String) The Primary Orchestrator Dashboard URL. + * `recovery_location` - (String) The disaster recovery location. + * `resource_group` - (String) The Resource group name. + * `standby_description` - (String) The standby orchestrator current status details. + * `standby_ip_address` - (String) The service Orchestator standby IP address. + * `standby_orchestrator_dashboard_url` - (String) The Standby Orchestrator Dashboard URL. + * `standby_status` - (String) The standby orchestrator current status. + * `status` - (String) The Status of the service. diff --git a/website/docs/d/pdr_get_machine_types.html.markdown b/website/docs/d/pdr_get_machine_types.html.markdown index 7d389ccadb..83d14a75db 100755 --- a/website/docs/d/pdr_get_machine_types.html.markdown +++ b/website/docs/d/pdr_get_machine_types.html.markdown @@ -26,13 +26,13 @@ You can specify the following arguments for this data source. * `accept_language` - (Optional, String) The language requested for the return document. * `instance_id` - (Required, Forces new resource, String) instance id of instance to provision. -* `primary_workspace_name` - (Required, String) Primary Workspace Name. -* `standby_workspace_name` - (Optional, String) Standby Workspace Name. +* `primary_workspace_name` - (Required, String) The primary Power virtual server workspace name. +* `standby_workspace_name` - (Optional, String) The standby Power virtual server workspace name. ## Attribute Reference After your data source is created, you can read values from the following attributes. * `id` - The unique identifier of the pdr_get_machine_types. -* `workspaces` - (Map) Map of workspace IDs to lists of machine types. +* `workspaces` - (Map) The Map of workspace IDs to lists of machine types. diff --git a/website/docs/d/pdr_get_powervs_workspace.html.markdown b/website/docs/d/pdr_get_powervs_workspace.html.markdown index d990f8782c..1c61086775 100644 --- a/website/docs/d/pdr_get_powervs_workspace.html.markdown +++ b/website/docs/d/pdr_get_powervs_workspace.html.markdown @@ -32,32 +32,32 @@ After your data source is created, you can read values from the following attrib * `id` - The unique identifier of the pdr_get_powervs_workspace. * `dr_standby_workspace_description` - (String) Description of Standby Workspace. -* `dr_standby_workspaces` - (List) List of standby disaster recovery workspaces. +* `dr_standby_workspaces` - (List) The list of standby disaster recovery workspaces. Nested schema for **dr_standby_workspaces**: - * `details` - (List) Detailed information of the standby DR workspace. + * `details` - (List) The detailed information of the standby DR workspace. Nested schema for **details**: * `crn` - (String) Cloud Resource Name (CRN) of the DR workspace. - * `id` - (String) Unique identifier of the standby workspace. - * `location` - (List) Location information of the standby workspace. + * `id` - (String) The unique identifier of the standby workspace. + * `location` - (List) The location information of the standby workspace. Nested schema for **location**: * `region` - (String) The region identifier of the DR location. * `type` - (String) The type of location (e.g., data-center, cloud-region). * `url` - (String) The URL endpoint to access the DR location. - * `name` - (String) Name of the standby workspace. - * `status` - (String) Current status of the standby workspace. + * `name` - (String) The name of the standby workspace. + * `status` - (String) The status of the standby workspace. * `dr_workspace_description` - (String) Description of Workspace. -* `dr_workspaces` - (List) List of primary disaster recovery workspaces. +* `dr_workspaces` - (List) The list of primary disaster recovery workspaces. Nested schema for **dr_workspaces**: * `default` - (Boolean) Indicates if this is the default DR workspace. - * `details` - (List) Detailed information about the DR workspace. + * `details` - (List) The detailed information about the DR workspace. Nested schema for **details**: * `crn` - (String) Cloud Resource Name (CRN) of the DR workspace. - * `id` - (String) Unique identifier of the DR workspace. - * `location` - (List) Location information of the DR workspace. + * `id` - (String) The unique identifier of the DR workspace. + * `location` - (List) The location information of the DR workspace. Nested schema for **location**: * `region` - (String) The region identifier of the DR location. * `type` - (String) The type of location (e.g., data-center, cloud-region). * `url` - (String) The URL endpoint to access the DR location. - * `name` - (String) Name of the DR workspace. - * `status` - (String) Current status of the DR workspace. + * `name` - (String) The name of the DR workspace. + * `status` - (String) The status of the DR workspace. diff --git a/website/docs/d/pdr_last_operation.html.markdown b/website/docs/d/pdr_last_operation.html.markdown index ea6bdc2cbb..6bc47b735f 100755 --- a/website/docs/d/pdr_last_operation.html.markdown +++ b/website/docs/d/pdr_last_operation.html.markdown @@ -30,24 +30,24 @@ You can specify the following arguments for this data source. After your data source is created, you can read values from the following attributes. * `id` - The unique identifier of the pdr_last_operation. -* `crn` - (String) Cloud Resource Name (CRN) of the service instance. -* `deployment_name` - (String) Name of the service instance deployment. -* `is_ksys_ha` - (Boolean) Indicates whether high availability (HA) is enabled for the orchestrator. -* `last_updated_orchestrator_deployment_time` - (String) Deployment time of primary orchestrator VM. -* `last_updated_standby_orchestrator_deployment_time` - (String) Deployment time of StandBy orchestrator VM. -* `mfa_enabled` - (String) Multiple Factor Authentication Enabled or not. +* `crn` - (String) The service instance crn. +* `deployment_name` - (String) The name of the service instance deployment. +* `last_updated_orchestrator_deployment_time` - (String) The deployment time of primary orchestrator VM. +* `last_updated_standby_orchestrator_deployment_time` - (String) The deployment time of StandBy orchestrator VM. +* `mfa_enabled` - (String) Indicated whether multi factor authentication is ennabled or not. * `orch_ext_connectivity_status` - (String) Status of standby node addition to the orchestrator cluster. -* `orch_standby_node_addtion_status` - (String) Health or informational message about the orchestrator cluster. -* `orchestrator_cluster_message` - (String) Current status of the primary orchestrator VM. -* `orchestrator_config_status` - (String) Configuration status of the orchestrator cluster. -* `plan_name` - (String) Name of the Plan. -* `primary_description` - (String) Detailed status message for the primary orchestrator VM. -* `primary_ip_address` - (String) IP address of the primary orchestrator VM. -* `primary_orchestrator_status` - (String) Configuration status of the orchestrator cluster. -* `recovery_location` - (String) Disaster recovery location associated with the instance. -* `resource_group` - (String) Resource group to which the service instance belongs. -* `standby_description` - (String) Detailed status message for the standby orchestrator VM. -* `standby_ip_address` - (String) IP address of the standby orchestrator VM. -* `standby_status` - (String) Current state of the standby orchestrator VM. -* `status` - (String) Overall status of the service instance. +* `orch_standby_node_addtion_status` - (String) The status of standby node in the Orchestrator cluster. +* `orchestrator_cluster_message` - (String) The current status of the primary orchestrator VM. +* `orchestrator_config_status` - (String) The configuration status of the orchestrator cluster. +* `orchestrator_ha` - (Boolean) Indicates whether high availability (HA) is enabled for the orchestrator. +* `plan_name` - (String) The name of the DR Automation plan. +* `primary_description` - (String) Indicates the progress details of primary orchestrator creation. +* `primary_ip_address` - (String) The IP address of the primary orchestrator VM. +* `primary_orchestrator_status` - (String) The configuration status of the orchestrator cluster. +* `recovery_location` - (String) The disaster recovery location associated with the instance. +* `resource_group` - (String) The resource group to which the service instance belongs. +* `standby_description` - (String) Indicates the progress details of primary orchestrator creation. +* `standby_ip_address` - (String) The IP address of the standby orchestrator VM. +* `standby_status` - (String) The current state of the standby orchestrator. +* `status` - (String) The current state of the primary orchestrator. diff --git a/website/docs/d/pdr_schematic_workspaces.html.markdown b/website/docs/d/pdr_schematic_workspaces.html.markdown deleted file mode 100644 index d3306a3f1e..0000000000 --- a/website/docs/d/pdr_schematic_workspaces.html.markdown +++ /dev/null @@ -1,45 +0,0 @@ ---- -layout: "ibm" -page_title: "IBM : ibm_pdr_schematic_workspaces" -description: |- - Get information about pdr_schematic_workspaces -subcategory: "DrAutomation Service" ---- - -# ibm_pdr_schematic_workspaces - -Provides a read-only data source to retrieve information about pdr_schematic_workspaces. You can then reference the fields of the data source in other resources within the same configuration by using interpolation syntax. - -## Example Usage - -```hcl -data "ibm_pdr_schematic_workspaces" "pdr_schematic_workspaces" { - instance_id = "crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::" -} -``` - -## Argument Reference - -You can specify the following arguments for this data source. - -* `instance_id` - (Required, Forces new resource, String) instance id of instance to provision. - -## Attribute Reference - -After your data source is created, you can read values from the following attributes. - -* `id` - The unique identifier of the pdr_schematic_workspaces. -* `workspaces` - (List) List of Schematics workspaces associated with the DR automation service instance. -Nested schema for **workspaces**: - * `catalog_ref` - (List) Reference to a catalog item associated with the DR automation workspace. - Nested schema for **catalog_ref**: - * `item_name` - (String) Name of the catalog item that defines the resource or configuration. - * `created_at` - (String) Timestamp when the Schematics workspace was created, in ISO 8601 format (UTC). - * `created_by` - (String) CRN of the user or service that created the Schematics workspace. - * `crn` - (String) Cloud Resource Name (CRN) of the Schematics workspace. - * `description` - (String) Detailed description of the Schematics workspace. - * `id` - (String) Unique identifier of the Schematics workspace. - * `location` - (String) Region where the Schematics workspace is hosted. - * `name` - (String) Human-readable name of the Schematics workspace. - * `status` - (String) Current lifecycle status of the Schematics workspace. - diff --git a/website/docs/d/pdr_validate_clustertype.html.markdown b/website/docs/d/pdr_validate_clustertype.html.markdown deleted file mode 100755 index 4c53cc122f..0000000000 --- a/website/docs/d/pdr_validate_clustertype.html.markdown +++ /dev/null @@ -1,37 +0,0 @@ ---- -layout: "ibm" -page_title: "IBM : ibm_pdr_validate_clustertype" -description: |- - Get information about pdr_validate_clustertype -subcategory: "DrAutomation Service" ---- - -# ibm_pdr_validate_clustertype - -Provides a read-only data source to retrieve information about a pdr_validate_clustertype. You can then reference the fields of the data source in other resources within the same configuration by using interpolation syntax. - -## Example Usage - -```hcl -data "ibm_pdr_validate_clustertype" "pdr_validate_clustertype" { - instance_id = "crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::" - orchestrator_cluster_type = "on-premises" -} -``` - -## Argument Reference - -You can specify the following arguments for this data source. - -* `accept_language` - (Optional, String) The language requested for the return document. -* `instance_id` - (Required, Forces new resource, String) instance id of instance to provision. -* `orchestrator_cluster_type` - (Required, String) orchestrator cluster type value. - -## Attribute Reference - -After your data source is created, you can read values from the following attributes. - -* `id` - The unique identifier of the pdr_validate_clustertype. -* `description` - (String) Human-readable message explaining the cluster type validation result. -* `status` - (String) Status of the cluster type validation (for example, valid, invalid, or error). - diff --git a/website/docs/d/pdr_validate_proxyip.html.markdown b/website/docs/d/pdr_validate_proxyip.html.markdown deleted file mode 100755 index c1d6e6cad8..0000000000 --- a/website/docs/d/pdr_validate_proxyip.html.markdown +++ /dev/null @@ -1,42 +0,0 @@ ---- -layout: "ibm" -page_title: "IBM : ibm_pdr_validate_proxyip" -description: |- - Get information about pdr_validate_proxyip -subcategory: "DrAutomation Service" ---- - -# ibm_pdr_validate_proxyip - -Provides a read-only data source to retrieve information about a pdr_validate_proxyip. You can then reference the fields of the data source in other resources within the same configuration by using interpolation syntax. - -## Example Usage - -```hcl -data "ibm_pdr_validate_proxyip" "pdr_validate_proxyip" { - instance_id = "crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::" - proxyip = "10.30.40.5:3128" - vpc_id = "r006-2f3b3ab9-2149-49cc-83a1-30a5d93d59b2" - vpc_location = "us-south" -} -``` - -## Argument Reference - -You can specify the following arguments for this data source. - -* `instance_id` - (Required, Forces new resource, String) instance id of instance to provision. -* `proxyip` - (Required, String) proxyip value. -* `vpc_id` - (Required, String) vpc id value. -* `vpc_location` - (Required, String) vpc location value. - -## Attribute Reference - -After your data source is created, you can read values from the following attributes. - -* `id` - The unique identifier of the pdr_validate_proxyip. -* `description` - (String) Human-readable message explaining the proxy IP validation result. -* `status` - (String) Status of the proxy IP validation (for example, valid, invalid, or error). -* `warning` - (Boolean) Indicates whether the proxy IP is valid but has an advisory (e.g., not in reserved IPs). - * Constraints: The default value is `false`. - diff --git a/website/docs/d/pdr_validate_workspace.html.markdown b/website/docs/d/pdr_validate_workspace.html.markdown deleted file mode 100755 index 2e944e5249..0000000000 --- a/website/docs/d/pdr_validate_workspace.html.markdown +++ /dev/null @@ -1,40 +0,0 @@ ---- -layout: "ibm" -page_title: "IBM : ibm_pdr_validate_workspace" -description: |- - Get information about pdr_validate_workspace -subcategory: "DrAutomation Service" ---- - -# ibm_pdr_validate_workspace - -Provides a read-only data source to retrieve information about a pdr_validate_workspace. You can then reference the fields of the data source in other resources within the same configuration by using interpolation syntax. - -## Example Usage - -```hcl -data "ibm_pdr_validate_workspace" "pdr_validate_workspace" { - crn = "crn:v1:bluemix:public:power-iaas:dal10:a/094f4214c75941f991da601b001df1fe:75cbf05b-78f6-406e-afe7-a904f646d798::" - instance_id = "crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::" - location_url = "https://us-south.power-iaas.cloud.ibm.com" - workspace_id = "75cbf05b-78f6-406e-afe7-a904f646d798" -} -``` - -## Argument Reference - -You can specify the following arguments for this data source. - -* `crn` - (Required, String) crn value. -* `instance_id` - (Required, Forces new resource, String) instance id of instance to provision. -* `location_url` - (Required, String) schematic_workspace_id value. -* `workspace_id` - (Required, String) standBy workspaceID value. - -## Attribute Reference - -After your data source is created, you can read values from the following attributes. - -* `id` - The unique identifier of the pdr_validate_workspace. -* `description` - (String) Human-readable message describing the validation result. -* `status` - (String) Status of the workspace validation (for example, Valid, Invalid, or Pending). - diff --git a/website/docs/d/pdr_workspace_custom_vpc.html.markdown b/website/docs/d/pdr_workspace_custom_vpc.html.markdown deleted file mode 100644 index a2a92af91d..0000000000 --- a/website/docs/d/pdr_workspace_custom_vpc.html.markdown +++ /dev/null @@ -1,66 +0,0 @@ ---- -layout: "ibm" -page_title: "IBM : ibm_pdr_workspace_custom_vpc" -description: |- - Get information about pdr_workspace_custom_vpc -subcategory: "DrAutomation Service" ---- - -# ibm_pdr_workspace_custom_vpc - -Provides a read-only data source to retrieve information about a pdr_workspace_custom_vpc. You can then reference the fields of the data source in other resources within the same configuration by using interpolation syntax. - -## Example Usage - -```hcl -data "ibm_pdr_workspace_custom_vpc" "pdr_workspace_custom_vpc" { - instance_id = "crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::" - location_id = "location_id" - tg_id = "925a7b81-a826-4d0a-8ef9-7496e9dc58bc" - vpc_id = "r006-2f3b3ab9-2149-49cc-83a1-30a5d93d59b2" -} -``` - -## Argument Reference - -You can specify the following arguments for this data source. - - -* `instance_id` - (Required, Forces new resource, String) instance id of instance to provision. -* `location_id` - (Required, String) Location ID value. -* `tg_id` - (Required, String) transit gateway id value. -* `vpc_id` - (Required, String) vpc id value. - -## Attribute Reference - -After your data source is created, you can read values from the following attributes. - -* `id` - The unique identifier of the pdr_workspace_custom_vpc. -* `dr_standby_workspaces` - (List) List of standby disaster recovery workspaces. -Nested schema for **dr_standby_workspaces**: - * `details` - (List) Detailed information of the standby DR workspace. - Nested schema for **details**: - * `crn` - (String) Cloud Resource Name (CRN) of the DR workspace. - * `id` - (String) Unique identifier of the standby workspace. - * `location` - (List) Location information of the standby workspace. - Nested schema for **location**: - * `region` - (String) The region identifier of the DR location. - * `type` - (String) The type of location (e.g., data-center, cloud-region). - * `url` - (String) The URL endpoint to access the DR location. - * `name` - (String) Name of the standby workspace. - * `status` - (String) Current status of the standby workspace. -* `dr_workspaces` - (List) List of primary disaster recovery workspaces. -Nested schema for **dr_workspaces**: - * `default` - (Boolean) Indicates if this is the default DR workspace. - * `details` - (List) Detailed information about the DR workspace. - Nested schema for **details**: - * `crn` - (String) Cloud Resource Name (CRN) of the DR workspace. - * `id` - (String) Unique identifier of the DR workspace. - * `location` - (List) Location information of the DR workspace. - Nested schema for **location**: - * `region` - (String) The region identifier of the DR location. - * `type` - (String) The type of location (e.g., data-center, cloud-region). - * `url` - (String) The URL endpoint to access the DR location. - * `name` - (String) Name of the DR workspace. - * `status` - (String) Current status of the DR workspace. - diff --git a/website/docs/d/pdr_workspace_schematic.html.markdown b/website/docs/d/pdr_workspace_schematic.html.markdown deleted file mode 100644 index 731c62bd76..0000000000 --- a/website/docs/d/pdr_workspace_schematic.html.markdown +++ /dev/null @@ -1,65 +0,0 @@ ---- -layout: "ibm" -page_title: "IBM : ibm_pdr_workspace_schematic" -description: |- - Get information about pdr_workspace_schematic -subcategory: "DrAutomation Service" ---- - -# ibm_pdr_workspace_schematic - -Provides a read-only data source to retrieve information about a pdr_workspace_schematic. You can then reference the fields of the data source in other resources within the same configuration by using interpolation syntax. - -## Example Usage - -```hcl -data "ibm_pdr_workspace_schematic" "pdr_workspace_schematic" { - instance_id = "crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::" - location_id = "location_id" - schematic_id = "us-south.workspace.projects-service.3ae96a02" -} -``` - -## Argument Reference - -You can specify the following arguments for this data source. - -* `instance_id` - (Required, Forces new resource, String) instance id of instance to provision. -* `location_id` - (Required, String) Location ID value. -* `schematic_id` - (Required, String) Schematic ID value. - -## Attribute Reference - -After your data source is created, you can read values from the following attributes. - -* `id` - The unique identifier of the pdr_workspace_schematic. -* `dr_standby_workspace_description` - (String) Description of Standby Workspace. -* `dr_standby_workspaces` - (List) List of standby disaster recovery workspaces. -Nested schema for **dr_standby_workspaces**: - * `details` - (List) Detailed information of the standby DR workspace. - Nested schema for **details**: - * `crn` - (String) Cloud Resource Name (CRN) of the DR workspace. - * `id` - (String) Unique identifier of the standby workspace. - * `location` - (List) Location information of the standby workspace. - Nested schema for **location**: - * `region` - (String) The region identifier of the DR location. - * `type` - (String) The type of location (e.g., data-center, cloud-region). - * `url` - (String) The URL endpoint to access the DR location. - * `name` - (String) Name of the standby workspace. - * `status` - (String) Current status of the standby workspace. -* `dr_workspace_description` - (String) Description of Workspace. -* `dr_workspaces` - (List) List of primary disaster recovery workspaces. -Nested schema for **dr_workspaces**: - * `default` - (Boolean) Indicates if this is the default DR workspace. - * `details` - (List) Detailed information about the DR workspace. - Nested schema for **details**: - * `crn` - (String) Cloud Resource Name (CRN) of the DR workspace. - * `id` - (String) Unique identifier of the DR workspace. - * `location` - (List) Location information of the DR workspace. - Nested schema for **location**: - * `region` - (String) The region identifier of the DR location. - * `type` - (String) The type of location (e.g., data-center, cloud-region). - * `url` - (String) The URL endpoint to access the DR location. - * `name` - (String) Name of the DR workspace. - * `status` - (String) Current status of the DR workspace. - diff --git a/website/docs/r/pdr_managedr.html.markdown b/website/docs/r/pdr_managedr.html.markdown index bdfcbc28ec..7d0e7c9314 100755 --- a/website/docs/r/pdr_managedr.html.markdown +++ b/website/docs/r/pdr_managedr.html.markdown @@ -8,25 +8,154 @@ subcategory: "DrAutomation Service" # ibm_pdr_managedr -Create, update, and delete pdr_managedrs with this resource. + Creates Orchestrator VM in the given workspace and configuration. Orchestrator VM can be used to manage multiple virtual servers and help ensure continuous availability. For more details, refer Deploying the Orchestrator - + https://test.cloud.ibm.com/docs/dr-automation-powervs?topic=dr-automation-powervs-idep-the-orch ## Example Usage ```hcl +ServiceInstanceManageDr HA with sshkey resource "ibm_pdr_managedr" "pdr_managedr_instance" { - instance_id = "crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::" + instance_id = "crn:v1:staging:public:power-dr-automation:global:a/a09202c1bfb04ceebfb4a9fd38c87721:050ebe3b-13f4-4db8-8ece-501a3c13be80mh1::" + orchestrator_ha = true + orchestrator_location_type = "off-premises" + location_id = "dal10" + orchestrator_workspace_id = "75cbf05b-78f6-406e-afe7-a904f646d798" + orchestrator_name = "drautomationprimarymh1" + orchestrator_password = "EverytimeNewPassword@1" + machine_type = "s922" + tier = "tier1" + ssh_key_name = "vijaykey" + action = "done" + api_key = "apikey is required" + + # Standby configuration (applicable only for HA setup) + standby_orchestrator_name = "drautomationstandbymh1" + standby_orchestrator_workspace_id = "71027b79-0e31-44f6-a499-63eca1a66feb" + standby_machine_type = "s922" + standby_tier = "tier1" + standby_redeploy = false + + # MFA (multi-factor authentication) details + client_id = "123abcd-97d2-4b14-bf62-8eaecc67a122" + client_secret = "abcdefgT5rS8wK6qR9dD7vF1hU4sA3bE2jG0pL9oX7yC" + tenant_name = "xxx.ibm.com" +} + +``` +```hcl +ServiceInstanceManageDr HA with secrets +resource "ibm_pdr_managedr" "pdr_managedr_instance" { + instance_id = "crn:v1:staging:public:power-dr-automation:global:a/a09202c1bfb04ceebfb4a9fd38c87721:050ebe3b-13f4-4db8-8ece-501a3c13be80mh3::" + orchestrator_ha = true + orchestrator_location_type = "off-premises" + location_id = "dal10" + orchestrator_workspace_id = "75cbf05b-78f6-406e-afe7-a904f646d798" + orchestrator_name = "drautomationprimarymh3" + orchestrator_password = "EverytimeNewPassword@1" + machine_type = "s922" + tier = "tier1" + guid = "397dc20d-9f66-46dc-a750-d15392872023" + secret_group = "12345-714f-86a6-6a50-2f128a4e7ac2" + secret = "12345-997c-1d0d-5503-27ca856f2b5a" + region_id = "us-south" + action = "done" + api_key = "apikey is required" + + # Standby configuration (for HA setup) + standby_orchestrator_name = "drautomationstandbymh3" + standby_orchestrator_workspace_id = "71027b79-0e31-44f6-a499-63eca1a66feb" + standby_machine_type = "s922" + standby_tier = "tier1" + standby_redeploy = false + + # MFA (Multi-Factor Authentication) + client_id = "123abcd-97d2-4b14-bf62-8eaecc67a122" + client_secret = "abcdefgT5rS8wK6qR9dD7vF1hU4sA3bE2jG0pL9oX7yC" + tenant_name = "xxx.ibm.com" +} +``` +```hcl +ServiceInstanceManageDr Non-HA with sshkey +resource "ibm_pdr_managedr" "pdr_managedr_instance" { + instance_id = "crn:v1:staging:public:power-dr-automation:global:a/a09202c1bfb04ceebfb4a9fd38c87721:050ebe3b-13f4-4db8-8ece-501a3c13be80mnh5::" + orchestrator_ha = false + orchestrator_location_type = "off-premises" + location_id = "dal10" + orchestrator_workspace_id = "75cbf05b-78f6-406e-afe7-a904f646d798" + orchestrator_name = "drautomationprimarymnh5" + orchestrator_password = "EverytimeNewPassword@1" + machine_type = "s922" + tier = "tier1" + ssh_key_name = "vijaykey" + action = "done" + api_key = "apikey is required" + + # MFA (Multi-Factor Authentication) + client_id = "123abcd-97d2-4b14-bf62-8eaecc67a122" + client_secret = "abcdefgT5rS8wK6qR9dD7vF1hU4sA3bE2jG0pL9oX7yC" + tenant_name = "xxx.ibm.com" +} +``` +```hcl +ServiceInstanceManageDr Non-HA with secrets +resource "ibm_pdr_managedr" "pdr_managedr_instance" { + instance_id = "crn:v1:staging:public:power-dr-automation:global:a/a09202c1bfb04ceebfb4a9fd38c87721:050ebe3b-13f4-4db8-8ece-501a3c13be80mnh7::" + orchestrator_ha = false + orchestrator_location_type = "off-premises" + location_id = "dal10" + orchestrator_workspace_id = "75cbf05b-78f6-406e-afe7-a904f646d798" + orchestrator_name = "drautomationprimarymnh7" + orchestrator_password = "EverytimeNewPassword@1" + machine_type = "s922" + tier = "tier1" + guid = "397dc20d-9f66-46dc-a750-d15392872023" + secret_group = "12345-714f-86a6-6a50-2f128a4e7ac2" + secret = "12345-997c-1d0d-5503-27ca856f2b5a" + region_id = "us-south" + action = "done" + api_key = "apikey is required" + + # MFA (Multi-Factor Authentication) + client_id = "123abcd-97d2-4b14-bf62-8eaecc67a122" + client_secret = "abcdefgT5rS8wK6qR9dD7vF1hU4sA3bE2jG0pL9oX7yC" + tenant_name = "xxx.ibm.com" } ``` ## Argument Reference -You can specify the following arguments for this resource. - -* `accept_language` - (Optional, Forces new resource, String) The language requested for the return document. -* `accepts_incomplete` - (Optional, Forces new resource, Boolean) A value of true indicates that both the IBM Cloud platform and the requesting client support asynchronous deprovisioning. - * Constraints: The default value is `true`. -* `instance_id` - (Required, Forces new resource, String) instance id of instance to provision. -* `stand_by_redeploy` - (Optional, Forces new resource, String) Flag to indicate if standby should be redeployed (must be "true" or "false"). +You can specify the following arguments for this resource: + +* `instance_id` - (Required, Forces new resource, String) The CRN (Cloud Resource Name) of the Power DR Automation service instance. +* `action` - (Optional, String) Indicates whether to proceed with asynchronous operation after all configuration details are updated in the database. +* `api_key` - (Required, String, Sensitive) The API key associated with the IBM Cloud service instance. +* `client_id` - (Optional, String) Client ID for MFA (Multi-Factor Authentication). +* `client_secret` - (Optional, String, Sensitive) Client secret for MFA (Multi-Factor Authentication). +* `tenant_name` - (Optional, String) Tenant name for MFA authentication. +* `guid` - (Optional, String) The globally unique identifier of the service instance. +* `region_id` - (Optional, String) Cloud region where the service instance is deployed. +* `location_id` - (Optional, String) Location or data center identifier where the service instance is deployed. +* `machine_type` - (Optional, String) Machine type or flavor used for virtual machines in the service instance. +* `tier` - (Optional, String) Tier of the service instance. +* `ssh_key_name` - (Optional, String) Name of the SSH key stored in the cloud provider. +* `ssh_public_key` - (Optional, String) SSH public key for accessing virtual machines in the service instance. +* `orchestrator_ha` - (Optional, Boolean) Flag to enable or disable High Availability (HA) for the service instance. +* `orchestrator_location_type` - (Optional, String) Type of orchestrator cluster used in the service instance. +* `orchestrator_name` - (Optional, String) Username for the orchestrator management interface. +* `orchestrator_password` - (Optional, String, Sensitive) Password for the orchestrator management interface. +* `orchestrator_workspace_id` - (Optional, String) ID of the orchestrator workspace. +* `orchestrator_workspace_location` - (Optional, String) Location of the orchestrator workspace. +* `resource_instance` - (Optional, String) ID of the associated IBM Cloud resource instance. +* `secondary_workspace_id` - (Optional, String) ID of the secondary workspace used for redundancy or disaster recovery. +* `secret_group` - (Optional, String) Secret group name in IBM Cloud Secrets Manager containing sensitive data for * the service instance. +* `secret` - (Optional, String) Secret name or identifier used for retrieving credentials from Secrets Manager. +* `standby_orchestrator_name` - (Optional, String) Username for the standby orchestrator management interface. +* `standby_orchestrator_workspace_id` - (Optional, String) ID of the standby orchestrator workspace. +* `standby_orchestrator_workspace_location` - (Optional, String) Location of the standby orchestrator workspace. +* `standby_machine_type` - (Optional, String) Machine type or flavor used for standby virtual machines. +* `standby_tier` - (Optional, String) Tier of the standby service instance. +* `stand_by_redeploy` - (Optional, String) Flag to indicate if the standby environment should be redeployed. Must be "true" or "false". ## Attribute Reference @@ -55,186 +184,3 @@ $ terraform import ibm_pdr_managedr.pdr_managedr <instance_id>/<instanc - -# ================================================================================================== - # HA Cases -# ================================================================================================== -# Case 1: ManageDR with HA + schematic id + sshkey -# provider "ibm" { -# region = "us-south" -# } - -# resource "ibm_power_vs_ssh_key" "vijaykey" { -# name = "vijaykey" -# public_key = file("~/.ssh/id_rsa.pub") -# } - -# resource "ibm_drautomation_service_instance" "ha_dr_instance" { - # name = "service1234" - # crn = "crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf7::" - # enable_flag = false - # dr_location_id = "dal10" - # dr_orchestrator_name = "drautomationprimary7a" - # dr_orchestrator_password = "Password1234567" - # dr_orchestrator_workspace_id = "75cbf05b-78f6-406e-afe7-a904f646d798" - # machine_type = "s922" - # orchestrator_cluster_type = "off-premises" - # schematic_workspace_id = "us-south.workspace.projects-service.3ae96a02" - # ssh_key_name = ibm_power_vs_ssh_key.vijaykey.name - # standby_machine_type = "s922" - # standby_orchestrator_name = "drautomationstandby7a" - # standby_orchestrator_workspace_id = "71027b79-0e31-44f6-a499-63eca1a66feb" - # tier = "tier1" -# } - -# ================================================================================================ - -# Case 2: ManageDR with HA + custom VPC + sshkey - -# resource "ibm_drautomation_service_instance" "ha_dr_instance" { - # name = "service1234" - # crn = "crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf7::" - # enable_flag = false - # dr_location_id = "dal10" - # dr_orchestrator_name = "drautomationprimary7a" - # dr_orchestrator_password = "Password1234567" - # dr_orchestrator_workspace_id = "75cbf05904f646d798" - # machine_type = "s922" - # orchestrator_cluster_type = "off-premises" - # ssh_key_name = ibm_power_vs_ssh_key.vijaykey.name - # standby_machine_type = "s922" - # standby_orchestrator_name = "drautomationstandby7a" - # standby_orchestrator_workspace_id = "71027b79-0e31-44f6-a499-63eca1a66feb" - # tier = "tier1" -# } - -# ================================================================================================== - -# Case 3: ManageDR with HA + schematic id + secrets - -# resource "ibm_drautomation_service_instance" "ha_dr_instance" { -# name = "service1234" -# crn = "crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf7::" -# enable_flag = false -# dr_location_id = "dal10" -# dr_orchestrator_name = "drautomationprimary7a" -# dr_orchestrator_password = "Password1234567" # Consider using a variable or secret reference -# dr_orchestrator_workspace_id = "75cbf05b-78f6-406e-afe7-a904f646d798" -# machine_type = "s922" -# orchestrator_cluster_type = "off-premises" -# schematic_workspace_id = "us-south.workspace.projects-service.3ae96a02" -# secret_group = "secret_group id" -# secret = "secret id" -# region_id = "us-south" -# guid = "gu id" -# standby_machine_type = "s922" -# standby_orchestrator_name = "drautomationstandby7a" -# standby_orchestrator_workspace_id = "71027b79-0e31-44f6-a499-63eca1a66feb" -# tier = "tier1" -# } - -# ================================================================================================== - -# Case 4: ManageDR with HA + custom VPC + secrets - -# resource "ibm_drautomation_service_instance" "ha_dr_instance" { -# name = "service1234" -# crn = "crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf7::" -# enable_flag = false -# dr_location_id = "dal10" -# dr_orchestrator_name = "drautomationprimary7a" -# dr_orchestrator_password = "Password1234567" # Use a variable or secret reference in production -# dr_orchestrator_workspace_id = "75cbf05b-78f6-406e-afe7-a904f646d798" -# machine_type = "s922" -# orchestrator_cluster_type = "off-premises" -# secret_group = "secret_group id" -# secret = "secret id" -# region_id = "us-south" -# guid = "gu id" -# standby_machine_type = "s922" -# standby_orchestrator_name = "drautomationstandby7a" -# standby_orchestrator_workspace_id = "71027b79-0e31-44f6-a499-63eca1a66feb" -# tier = "tier1" -# } - -# ================================================================================================== - # Non-HA Cases -# ================================================================================================== - -# Case 1: ManageDR without HA + schematic id + sshkey -# resource "ibm_drautomation_service_instance" "non_ha_dr_instance" { -# name = "service1234" -# crn = "crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf7::" -# enable_flag = false -# dr_location_id = "dal10" -# dr_orchestrator_name = "drautomationprimary7a" -# dr_orchestrator_password = "Password1234567" # Use a variable or secret reference in production -# dr_orchestrator_workspace_id = "75cbf05b-78f6-406e-afe7-a904f646d798" -# machine_type = "s922" -# orchestrator_cluster_type = "off-premises" -# schematic_workspace_id = "us-south.workspace.projects-service.3ae96a02" -# ssh_key_name = ibm_power_vs_ssh_key.vijaykey.name -# tier = "tier1" -# } - -# ================================================================================================== - -# Case 2: ManageDR without HA + custom VPC + sshkey -# resource "ibm_drautomation_service_instance" "non_ha_dr_instance" { -# name = "service1234" -# crn = "crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf7::" -# enable_flag = false -# dr_location_id = "dal10" -# dr_orchestrator_name = "drautomationprimary7a" -# dr_orchestrator_password = "Password1234567" # Use a variable or secret reference in production -# dr_orchestrator_workspace_id = "75cbf05b-78f6-406e-afe7-a904f646d798" -# machine_type = "s922" -# orchestrator_cluster_type = "off-premises" -# ssh_key_name = ibm_power_vs_ssh_key.vijaykey.name -# tier = "tier1" -# } - -# ================================================================================================== - -# Case 3: ManageDR without HA + schematic id + secrets -# resource "ibm_drautomation_service_instance" "non_ha_dr_instance" { -# name = "service1234" -# crn = "crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf7::" -# enable_flag = false# -# dr_location_id = "dal10" -# dr_orchestrator_name = "drautomationprimary7a" -# dr_orchestrator_password = "Password1234567" # Use a variable or secret reference in production -# dr_orchestrator_workspace_id = "75cbf05b-78f6-406e-afe7-a904f646d798" -# machine_type = "s922" -# orchestrator_cluster_type = "off-premises" -# schematic_workspace_id = "us-south.workspace.projects-service.3ae96a02" -# secret_group = "secret_group id" -# secret = "secret id" -# region_id = "us-south" -# guid = "gu id" -# tier = "tier1" -# } - -# ================================================================================================== - -# Case 4: ManageDR without HA + custom VPC + secrets -# resource "ibm_drautomation_service_instance" "non_ha_dr_instance" { -# name = "service1234" -# crn = "crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf7::" -# enable_flag = false# -# dr_location_id = "dal10" -# dr_orchestrator_name = "drautomationprimary7a" -# dr_orchestrator_password = "Password1234567" # Use a variable or secret reference in production -# dr_orchestrator_workspace_id = "75cbf05b-78f6-406e-afe7-a904f646d798" -# machine_type = "s922" -# orchestrator_cluster_type = "off-premises" -# secret_group = "secret_group id" -# secret = "secret id" -# region_id = "us-south" -# guid = "gu id" -# tier = "tier1" -# } - - -# ================================================================================ - diff --git a/website/docs/r/pdr_validate_apikey.html.markdown b/website/docs/r/pdr_validate_apikey.html.markdown index 73ed665afe..af9e8026a3 100755 --- a/website/docs/r/pdr_validate_apikey.html.markdown +++ b/website/docs/r/pdr_validate_apikey.html.markdown @@ -8,13 +8,14 @@ subcategory: "DrAutomation Service" # ibm_pdr_validate_apikey -Create, update, and delete pdr_validate_apikeys with this resource. + Updating the current API key details for the specified service instance. ## Example Usage ```hcl resource "ibm_pdr_validate_apikey" "pdr_validate_apikey_instance" { instance_id = "crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::" + api_key = "adsfsdfdfsadfda" } ``` @@ -24,7 +25,8 @@ You can specify the following arguments for this resource. * `accept_language` - (Optional, String) The language requested for the return document. * `instance_id` - (Required, Forces new resource, String) instance id of instance to provision. - +* `api_key` - (Required, String) The new API key value that will replace the existing one. + ## Attribute Reference After your resource is created, you can read values from the listed arguments and the following attributes. From 8a59a32b1da4f99f308a2edf60677f4b5840290e Mon Sep 17 00:00:00 2001 From: Mani-Raj-Langaru1 Date: Tue, 18 Nov 2025 05:45:46 -0500 Subject: [PATCH 05/13] updated Terraform files and resolved mangedvm error --- go.sum | 4 +- .../data_source_ibm_pdr_get_dr_locations.go | 5 ++ ..._source_ibm_pdr_get_dr_summary_response.go | 7 +- ...ce_ibm_pdr_get_dr_summary_response_test.go | 6 +- .../data_source_ibm_pdr_get_event.go | 16 +++- .../data_source_ibm_pdr_get_event_test.go | 4 +- .../data_source_ibm_pdr_get_events.go | 15 ++-- .../data_source_ibm_pdr_get_events_test.go | 4 +- ...a_source_ibm_pdr_get_grs_location_pairs.go | 5 ++ ...rce_ibm_pdr_get_grs_location_pairs_test.go | 2 +- .../data_source_ibm_pdr_get_machine_types.go | 5 ++ ...data_source_ibm_pdr_get_managed_vm_list.go | 77 +++++++++++++++---- ...ta_source_ibm_pdr_get_powervs_workspace.go | 7 +- .../data_source_ibm_pdr_last_operation.go | 7 +- ibm/service/drautomationservice/dra-go-sdk | 2 +- .../resource_ibm_pdr_managedr.go | 3 - .../resource_ibm_pdr_managedr_test.go | 10 +-- .../resource_ibm_pdr_validate_apikey.go | 9 ++- .../resource_ibm_pdr_validate_apikey_test.go | 2 +- 19 files changed, 142 insertions(+), 48 deletions(-) diff --git a/go.sum b/go.sum index 0a7eda37fb..a8bdbc1708 100644 --- a/go.sum +++ b/go.sum @@ -1239,8 +1239,8 @@ github.com/zclconf/go-cty v1.16.3 h1:osr++gw2T61A8KVYHoQiFbFd1Lh3JOCXc/jFLJXKTxk github.com/zclconf/go-cty v1.16.3/go.mod h1:VvMs5i0vgZdhYawQNq5kePSpLAoz8u1xvZgrPIxfnZE= github.com/zclconf/go-cty-debug v0.0.0-20240509010212-0d6042c53940 h1:4r45xpDWB6ZMSMNJFMOjqrGHynW3DIBuR2H9j0ug+Mo= github.com/zclconf/go-cty-debug v0.0.0-20240509010212-0d6042c53940/go.mod h1:CmBdvvj3nqzfzJ6nTCIwDTPZ56aVGvDrmztiO5g3qrM= -github.ibm.com/DRAutomation/dra-go-sdk v0.0.0-20251104054047-090b5d3b82c6 h1:EbNVift6EX56MZKpRraACYwK6HdPG8bV/XeyA2SON1Q= -github.ibm.com/DRAutomation/dra-go-sdk v0.0.0-20251104054047-090b5d3b82c6/go.mod h1:elZ3feXTKo/gGNRHVxiSEL20xLkwRH8KYn5iWVa0yUw= +github.ibm.com/DRAutomation/dra-go-sdk v0.0.0-20251118093457-0d6f8c56680b h1:2K0FOTwPQSxCG9ZQ6yln2J4Jo+qvAxawHbHIeQImWnw= +github.ibm.com/DRAutomation/dra-go-sdk v0.0.0-20251118093457-0d6f8c56680b/go.mod h1:elZ3feXTKo/gGNRHVxiSEL20xLkwRH8KYn5iWVa0yUw= go.etcd.io/bbolt v1.3.2/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU= go.etcd.io/bbolt v1.3.3/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU= go.etcd.io/bbolt v1.3.5/go.mod h1:G5EMThwa9y8QZGBClrRx5EY+Yw9kAhnjy3bSjsnlVTQ= diff --git a/ibm/service/drautomationservice/data_source_ibm_pdr_get_dr_locations.go b/ibm/service/drautomationservice/data_source_ibm_pdr_get_dr_locations.go index ecb6088ba4..9546c4a25b 100644 --- a/ibm/service/drautomationservice/data_source_ibm_pdr_get_dr_locations.go +++ b/ibm/service/drautomationservice/data_source_ibm_pdr_get_dr_locations.go @@ -11,6 +11,7 @@ import ( "context" "fmt" "log" + "strings" "github.com/hashicorp/terraform-plugin-sdk/v2/diag" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" @@ -109,6 +110,10 @@ func dataSourceIBMPdrGetDrLocationsRead(context context.Context, d *schema.Resou // dataSourceIBMPdrGetDrLocationsID returns a reasonable ID for the list. func dataSourceIBMPdrGetDrLocationsID(d *schema.ResourceData) string { + parts := strings.Split(d.Get("instance_id").(string), ":") + if len(parts) > 7 { + return parts[7] + } return d.Get("instance_id").(string) } diff --git a/ibm/service/drautomationservice/data_source_ibm_pdr_get_dr_summary_response.go b/ibm/service/drautomationservice/data_source_ibm_pdr_get_dr_summary_response.go index d519cb3f78..5b6edaba7a 100644 --- a/ibm/service/drautomationservice/data_source_ibm_pdr_get_dr_summary_response.go +++ b/ibm/service/drautomationservice/data_source_ibm_pdr_get_dr_summary_response.go @@ -11,6 +11,7 @@ import ( "context" "fmt" "log" + "strings" "github.com/hashicorp/terraform-plugin-sdk/v2/diag" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" @@ -314,6 +315,10 @@ func dataSourceIBMPdrGetDrSummaryResponseRead(context context.Context, d *schema // dataSourceIBMPdrGetDrSummaryResponseID returns a reasonable ID for the list. func dataSourceIBMPdrGetDrSummaryResponseID(d *schema.ResourceData) string { + parts := strings.Split(d.Get("instance_id").(string), ":") + if len(parts) > 7 { + return parts[7] + } return d.Get("instance_id").(string) } @@ -352,7 +357,7 @@ func DataSourceIBMPdrGetDrSummaryResponseServiceDetailsToMap(model *drautomation modelMap["crn"] = *model.CRN modelMap["deployment_name"] = *model.DeploymentName modelMap["description"] = *model.Description - modelMap["orchestrator_ha"] = *model. + modelMap["orchestrator_ha"] = *model.OrchestratorHa modelMap["plan_name"] = *model.PlanName modelMap["primary_ip_address"] = *model.PrimaryIPAddress modelMap["primary_orchestrator_dashboard_url"] = *model.PrimaryOrchestratorDashboardURL diff --git a/ibm/service/drautomationservice/data_source_ibm_pdr_get_dr_summary_response_test.go b/ibm/service/drautomationservice/data_source_ibm_pdr_get_dr_summary_response_test.go index 3f69a735ee..cfeb9180b5 100644 --- a/ibm/service/drautomationservice/data_source_ibm_pdr_get_dr_summary_response_test.go +++ b/ibm/service/drautomationservice/data_source_ibm_pdr_get_dr_summary_response_test.go @@ -3,7 +3,7 @@ /* * IBM OpenAPI Terraform Generator Version: 3.105.0-3c13b041-20250605-193116 - */ +*/ package drautomationservice_test @@ -13,12 +13,12 @@ import ( "github.com/hashicorp/terraform-plugin-testing/helper/resource" - acc "github.com/IBM-Cloud/terraform-provider-ibm/ibm/acctest" "github.com/IBM-Cloud/terraform-provider-ibm/ibm/service/drautomationservice" - . "github.com/IBM-Cloud/terraform-provider-ibm/ibm/unittest" "github.com/IBM/go-sdk-core/v5/core" "github.com/stretchr/testify/assert" "github.ibm.com/DRAutomation/dra-go-sdk/drautomationservicev1" + . "github.com/IBM-Cloud/terraform-provider-ibm/ibm/unittest" + acc "github.com/IBM-Cloud/terraform-provider-ibm/ibm/acctest" ) func TestAccIBMPdrGetDrSummaryResponseDataSourceBasic(t *testing.T) { diff --git a/ibm/service/drautomationservice/data_source_ibm_pdr_get_event.go b/ibm/service/drautomationservice/data_source_ibm_pdr_get_event.go index a05a2f2370..3f954faea8 100644 --- a/ibm/service/drautomationservice/data_source_ibm_pdr_get_event.go +++ b/ibm/service/drautomationservice/data_source_ibm_pdr_get_event.go @@ -3,7 +3,7 @@ /* * IBM OpenAPI Terraform Generator Version: 3.105.0-3c13b041-20250605-193116 -*/ + */ package drautomationservice @@ -11,6 +11,7 @@ import ( "context" "fmt" "log" + "strings" "github.com/hashicorp/terraform-plugin-sdk/v2/diag" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" @@ -26,10 +27,10 @@ func DataSourceIBMPdrGetEvent() *schema.Resource { ReadContext: dataSourceIBMPdrGetEventRead, Schema: map[string]*schema.Schema{ - "provision_id": &schema.Schema{ + "instance_id": &schema.Schema{ Type: schema.TypeString, Required: true, - Description: "provision id.", + Description: "instance id of the service.", }, "event_id": &schema.Schema{ Type: schema.TypeString, @@ -130,11 +131,14 @@ func dataSourceIBMPdrGetEventRead(context context.Context, d *schema.ResourceDat getEventOptions := &drautomationservicev1.GetEventOptions{} - getEventOptions.SetProvisionID(d.Get("provision_id").(string)) + getEventOptions.SetInstanceID(d.Get("instance_id").(string)) getEventOptions.SetEventID(d.Get("event_id").(string)) if _, ok := d.GetOk("accept_language"); ok { getEventOptions.SetAcceptLanguage(d.Get("accept_language").(string)) } + if _, ok := d.GetOk("if_none_match"); ok { + getEventOptions.SetIfNoneMatch(d.Get("if_none_match").(string)) + } event, response, err := drAutomationServiceClient.GetEventWithContext(context, getEventOptions) if err != nil { @@ -220,6 +224,10 @@ func dataSourceIBMPdrGetEventRead(context context.Context, d *schema.ResourceDat // dataSourceIBMPdrGetEventID returns a reasonable ID for the list. func dataSourceIBMPdrGetEventID(d *schema.ResourceData) string { + parts := strings.Split(d.Get("instance_id").(string), ":") + if len(parts) > 7 { + return parts[7] + } return d.Get("instance_id").(string) } diff --git a/ibm/service/drautomationservice/data_source_ibm_pdr_get_event_test.go b/ibm/service/drautomationservice/data_source_ibm_pdr_get_event_test.go index cbb506c3b4..63cd0388eb 100644 --- a/ibm/service/drautomationservice/data_source_ibm_pdr_get_event_test.go +++ b/ibm/service/drautomationservice/data_source_ibm_pdr_get_event_test.go @@ -29,7 +29,7 @@ func TestAccIBMPdrGetEventDataSourceBasic(t *testing.T) { Config: testAccCheckIBMPdrGetEventDataSourceConfigBasic(), Check: resource.ComposeTestCheckFunc( resource.TestCheckResourceAttrSet("data.ibm_pdr_get_event.pdr_get_event_instance", "id"), - resource.TestCheckResourceAttrSet("data.ibm_pdr_get_event.pdr_get_event_instance", "provision_id"), + resource.TestCheckResourceAttrSet("data.ibm_pdr_get_event.pdr_get_event_instance", "instance_id"), resource.TestCheckResourceAttrSet("data.ibm_pdr_get_event.pdr_get_event_instance", "event_id"), resource.TestCheckResourceAttrSet("data.ibm_pdr_get_event.pdr_get_event_instance", "action"), resource.TestCheckResourceAttrSet("data.ibm_pdr_get_event.pdr_get_event_instance", "level"), @@ -46,7 +46,7 @@ func TestAccIBMPdrGetEventDataSourceBasic(t *testing.T) { func testAccCheckIBMPdrGetEventDataSourceConfigBasic() string { return fmt.Sprintf(` data "ibm_pdr_get_event" "pdr_get_event_instance" { - provision_id = "crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::" + instance_id = "crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::" event_id = "00116b2a-9326-4024-839e-fb5364b76898" } `) diff --git a/ibm/service/drautomationservice/data_source_ibm_pdr_get_events.go b/ibm/service/drautomationservice/data_source_ibm_pdr_get_events.go index 4a20bf5a85..070fa04eba 100644 --- a/ibm/service/drautomationservice/data_source_ibm_pdr_get_events.go +++ b/ibm/service/drautomationservice/data_source_ibm_pdr_get_events.go @@ -3,7 +3,7 @@ /* * IBM OpenAPI Terraform Generator Version: 3.105.0-3c13b041-20250605-193116 -*/ + */ package drautomationservice @@ -11,6 +11,7 @@ import ( "context" "fmt" "log" + "strings" "github.com/hashicorp/terraform-plugin-sdk/v2/diag" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" @@ -25,10 +26,10 @@ func DataSourceIBMPdrGetEvents() *schema.Resource { ReadContext: dataSourceIBMPdrGetEventsRead, Schema: map[string]*schema.Schema{ - "provision_id": &schema.Schema{ + "instance_id": &schema.Schema{ Type: schema.TypeString, Required: true, - Description: "provision id.", + Description: "instance id of the service.", }, "time": &schema.Schema{ Type: schema.TypeString, @@ -153,7 +154,7 @@ func dataSourceIBMPdrGetEventsRead(context context.Context, d *schema.ResourceDa listEventsOptions := &drautomationservicev1.ListEventsOptions{} - listEventsOptions.SetProvisionID(d.Get("provision_id").(string)) + listEventsOptions.SetInstanceID(d.Get("instance_id").(string)) if _, ok := d.GetOk("time"); ok { listEventsOptions.SetTime(d.Get("time").(string)) } @@ -200,7 +201,11 @@ func dataSourceIBMPdrGetEventsRead(context context.Context, d *schema.ResourceDa // dataSourceIBMPdrGetEventsID returns a reasonable ID for the list. func dataSourceIBMPdrGetEventsID(d *schema.ResourceData) string { - return d.Get("provision_id").(string) + parts := strings.Split(d.Get("instance_id").(string), ":") + if len(parts) > 7 { + return parts[7] + } + return d.Get("instance_id").(string) } func DataSourceIBMPdrGetEventsEventToMap(model *drautomationservicev1.Event) (map[string]interface{}, error) { diff --git a/ibm/service/drautomationservice/data_source_ibm_pdr_get_events_test.go b/ibm/service/drautomationservice/data_source_ibm_pdr_get_events_test.go index 8f7144936e..7b5c460086 100644 --- a/ibm/service/drautomationservice/data_source_ibm_pdr_get_events_test.go +++ b/ibm/service/drautomationservice/data_source_ibm_pdr_get_events_test.go @@ -30,7 +30,7 @@ func TestAccIBMPdrGetEventsDataSourceBasic(t *testing.T) { Config: testAccCheckIBMPdrGetEventsDataSourceConfigBasic(), Check: resource.ComposeTestCheckFunc( resource.TestCheckResourceAttrSet("data.ibm_pdr_get_events.pdr_get_events_instance", "id"), - resource.TestCheckResourceAttrSet("data.ibm_pdr_get_events.pdr_get_events_instance", "provision_id"), + resource.TestCheckResourceAttrSet("data.ibm_pdr_get_events.pdr_get_events_instance", "instance_id"), resource.TestCheckResourceAttrSet("data.ibm_pdr_get_events.pdr_get_events_instance", "event.#"), ), }, @@ -41,7 +41,7 @@ func TestAccIBMPdrGetEventsDataSourceBasic(t *testing.T) { func testAccCheckIBMPdrGetEventsDataSourceConfigBasic() string { return fmt.Sprintf(` data "ibm_pdr_get_events" "pdr_get_events_instance" { - provision_id = "crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::" + instance_id = "crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::" time = "2025-06-19T23:59:59Z" from_time = "2025-06-19T00:00:00Z" to_time = "2025-06-19T23:59:59Z" diff --git a/ibm/service/drautomationservice/data_source_ibm_pdr_get_grs_location_pairs.go b/ibm/service/drautomationservice/data_source_ibm_pdr_get_grs_location_pairs.go index 374086f778..f2417eb0ef 100644 --- a/ibm/service/drautomationservice/data_source_ibm_pdr_get_grs_location_pairs.go +++ b/ibm/service/drautomationservice/data_source_ibm_pdr_get_grs_location_pairs.go @@ -11,6 +11,7 @@ import ( "context" "fmt" "log" + "strings" "github.com/hashicorp/terraform-plugin-sdk/v2/diag" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" @@ -91,5 +92,9 @@ func dataSourceIBMPdrGetGrsLocationPairsRead(context context.Context, d *schema. // dataSourceIBMPdrGetGrsLocationPairsID returns a reasonable ID for the list. func dataSourceIBMPdrGetGrsLocationPairsID(d *schema.ResourceData) string { + parts := strings.Split(d.Get("instance_id").(string), ":") + if len(parts) > 7 { + return parts[7] + } return d.Get("instance_id").(string) } diff --git a/ibm/service/drautomationservice/data_source_ibm_pdr_get_grs_location_pairs_test.go b/ibm/service/drautomationservice/data_source_ibm_pdr_get_grs_location_pairs_test.go index 31b68d9730..54ae30ce4d 100644 --- a/ibm/service/drautomationservice/data_source_ibm_pdr_get_grs_location_pairs_test.go +++ b/ibm/service/drautomationservice/data_source_ibm_pdr_get_grs_location_pairs_test.go @@ -3,7 +3,7 @@ /* * IBM OpenAPI Terraform Generator Version: 3.105.0-3c13b041-20250605-193116 - */ +*/ package drautomationservice_test diff --git a/ibm/service/drautomationservice/data_source_ibm_pdr_get_machine_types.go b/ibm/service/drautomationservice/data_source_ibm_pdr_get_machine_types.go index 01925cbfaa..0dbb581070 100644 --- a/ibm/service/drautomationservice/data_source_ibm_pdr_get_machine_types.go +++ b/ibm/service/drautomationservice/data_source_ibm_pdr_get_machine_types.go @@ -11,6 +11,7 @@ import ( "context" "fmt" "log" + "strings" "github.com/hashicorp/terraform-plugin-sdk/v2/diag" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" @@ -128,6 +129,10 @@ func dataSourceIBMPdrGetMachineTypesRead(context context.Context, d *schema.Reso // dataSourceIBMPdrGetMachineTypesID returns a reasonable ID for the list. func dataSourceIBMPdrGetMachineTypesID(d *schema.ResourceData) string { + parts := strings.Split(d.Get("instance_id").(string), ":") + if len(parts) > 7 { + return parts[7] + } return d.Get("instance_id").(string) } diff --git a/ibm/service/drautomationservice/data_source_ibm_pdr_get_managed_vm_list.go b/ibm/service/drautomationservice/data_source_ibm_pdr_get_managed_vm_list.go index 12940cc036..c22734d2ae 100644 --- a/ibm/service/drautomationservice/data_source_ibm_pdr_get_managed_vm_list.go +++ b/ibm/service/drautomationservice/data_source_ibm_pdr_get_managed_vm_list.go @@ -3,7 +3,7 @@ /* * IBM OpenAPI Terraform Generator Version: 3.105.0-3c13b041-20250605-193116 -*/ + */ package drautomationservice @@ -11,6 +11,7 @@ import ( "context" "fmt" "log" + "strings" "github.com/hashicorp/terraform-plugin-sdk/v2/diag" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" @@ -36,12 +37,21 @@ func DataSourceIBMPdrGetManagedVMList() *schema.Resource { Optional: true, Description: "The language requested for the return document.", }, - "managed_vms": &schema.Schema{ - Type: schema.TypeMap, - Computed: true, - Description: "A map where the key is the VM ID and the value is the corresponding ManagedVmDetails object.", - Elem: &schema.Schema{ - Type: schema.TypeString, + "managed_vm_list": &schema.Schema{ + Type: schema.TypeList, + Computed: true, + Elem: &schema.Resource{ + Schema: map[string]*schema.Schema{ + "vm_id": {Type: schema.TypeString, Computed: true}, + "core": {Type: schema.TypeString, Computed: true}, + "dr_average_time": {Type: schema.TypeString, Computed: true}, + "dr_region": {Type: schema.TypeString, Computed: true}, + "memory": {Type: schema.TypeString, Computed: true}, + "region": {Type: schema.TypeString, Computed: true}, + "vm_name": {Type: schema.TypeString, Computed: true}, + "workgroup_name": {Type: schema.TypeString, Computed: true}, + "workspace_name": {Type: schema.TypeString, Computed: true}, + }, }, }, }, @@ -83,13 +93,50 @@ func dataSourceIBMPdrGetManagedVMListRead(context context.Context, d *schema.Res d.SetId(dataSourceIBMPdrGetManagedVMListID(d)) - if !core.IsNil(managedVMMapResponse.ManagedVms) { - convertedMap := make(map[string]interface{}, len(managedVMMapResponse.ManagedVms)) - for k, v := range managedVMMapResponse.ManagedVms { - convertedMap[k] = v + if !core.IsNil(managedVMMapResponse.ManagedVMList) { + // convertedMap := make(map[string]interface{}, len(managedVMMapResponse.ManagedVMList)) + list := make([]map[string]interface{}, 0, len(managedVMMapResponse.ManagedVMList)) + + for vmID, vmDetails := range managedVMMapResponse.ManagedVMList { + + obj := map[string]interface{}{ + "vm_id": vmID, + } + + if vmDetails.Core != nil { + obj["core"] = *vmDetails.Core + } + if vmDetails.DrAverageTime != nil { + obj["dr_average_time"] = *vmDetails.DrAverageTime + } + if vmDetails.DrRegion != nil { + obj["dr_region"] = *vmDetails.DrRegion + } + if vmDetails.Memory != nil { + obj["memory"] = *vmDetails.Memory + } + if vmDetails.Region != nil { + obj["region"] = *vmDetails.Region + } + if vmDetails.VMName != nil { + obj["vm_name"] = *vmDetails.VMName + } + if vmDetails.WorkgroupName != nil { + obj["workgroup_name"] = *vmDetails.WorkgroupName + } + if vmDetails.WorkspaceName != nil { + obj["workspace_name"] = *vmDetails.WorkspaceName + } + + list = append(list, obj) } - if err = d.Set("managed_vms", flex.Flatten(convertedMap)); err != nil { - return flex.DiscriminatedTerraformErrorf(err, fmt.Sprintf("Error setting managed_vms: %s", err), "(Data) ibm_pdr_get_managed_vm_list", "read", "set-managed_vms").GetDiag() + + // if err := d.Set("managed_vm_list", list); err != nil { + // return diag.FromErr(err) + // } + + if err = d.Set("managed_vm_list", list); err != nil { + return flex.DiscriminatedTerraformErrorf(err, fmt.Sprintf("Error setting managed_vm_list: %s", err), "(Data) ibm_pdr_get_managed_vm_list", "read", "set-managed_vm_list").GetDiag() } } @@ -98,6 +145,10 @@ func dataSourceIBMPdrGetManagedVMListRead(context context.Context, d *schema.Res // dataSourceIBMPdrGetManagedVMListID returns a reasonable ID for the list. func dataSourceIBMPdrGetManagedVMListID(d *schema.ResourceData) string { + parts := strings.Split(d.Get("instance_id").(string), ":") + if len(parts) > 7 { + return parts[7] + } return d.Get("instance_id").(string) } diff --git a/ibm/service/drautomationservice/data_source_ibm_pdr_get_powervs_workspace.go b/ibm/service/drautomationservice/data_source_ibm_pdr_get_powervs_workspace.go index e036b8ab77..5866aaea11 100644 --- a/ibm/service/drautomationservice/data_source_ibm_pdr_get_powervs_workspace.go +++ b/ibm/service/drautomationservice/data_source_ibm_pdr_get_powervs_workspace.go @@ -11,6 +11,7 @@ import ( "context" "fmt" "log" + "strings" "github.com/hashicorp/terraform-plugin-sdk/v2/diag" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" @@ -49,7 +50,7 @@ func DataSourceIBMPdrGetPowervsWorkspace() *schema.Resource { "dr_standby_workspaces": &schema.Schema{ Type: schema.TypeList, Computed: true, - Description: "List of standby disaster recovery workspaces.", + Description: "The list of standby disaster recovery workspaces.", Elem: &schema.Resource{ Schema: map[string]*schema.Schema{ "details": &schema.Schema{ @@ -255,6 +256,10 @@ func dataSourceIBMPdrGetPowervsWorkspaceRead(context context.Context, d *schema. // dataSourceIBMPdrGetPowervsWorkspaceID returns a reasonable ID for the list. func dataSourceIBMPdrGetPowervsWorkspaceID(d *schema.ResourceData) string { + parts := strings.Split(d.Get("instance_id").(string), ":") + if len(parts) > 7 { + return parts[7] + } return d.Get("instance_id").(string) } diff --git a/ibm/service/drautomationservice/data_source_ibm_pdr_last_operation.go b/ibm/service/drautomationservice/data_source_ibm_pdr_last_operation.go index 92820c4e98..7f3478177f 100644 --- a/ibm/service/drautomationservice/data_source_ibm_pdr_last_operation.go +++ b/ibm/service/drautomationservice/data_source_ibm_pdr_last_operation.go @@ -3,7 +3,7 @@ /* * IBM OpenAPI Terraform Generator Version: 3.105.0-3c13b041-20250605-193116 -*/ + */ package drautomationservice @@ -11,6 +11,7 @@ import ( "context" "fmt" "log" + "strings" "github.com/hashicorp/terraform-plugin-sdk/v2/diag" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" @@ -262,5 +263,9 @@ func dataSourceIBMPdrLastOperationRead(context context.Context, d *schema.Resour // dataSourceIBMPdrLastOperationID returns a reasonable ID for the list. func dataSourceIBMPdrLastOperationID(d *schema.ResourceData) string { + parts := strings.Split(d.Get("instance_id").(string), ":") + if len(parts) > 7 { + return parts[7] + } return d.Get("instance_id").(string) } diff --git a/ibm/service/drautomationservice/dra-go-sdk b/ibm/service/drautomationservice/dra-go-sdk index 45cba61fcf..0d6f8c5668 160000 --- a/ibm/service/drautomationservice/dra-go-sdk +++ b/ibm/service/drautomationservice/dra-go-sdk @@ -1 +1 @@ -Subproject commit 45cba61fcfdf94a06b7488e91016e8f4ded04814 +Subproject commit 0d6f8c56680bd309f771da71bfaf6c30de90c2f8 diff --git a/ibm/service/drautomationservice/resource_ibm_pdr_managedr.go b/ibm/service/drautomationservice/resource_ibm_pdr_managedr.go index d95868d168..775971bcad 100644 --- a/ibm/service/drautomationservice/resource_ibm_pdr_managedr.go +++ b/ibm/service/drautomationservice/resource_ibm_pdr_managedr.go @@ -258,9 +258,6 @@ func resourceIbmPdrManagedrCreate(ctx context.Context, d *schema.ResourceData, m createManageDrOptions.SetInstanceID(d.Get("instance_id").(string)) createManageDrOptions.SetStandByRedeploy(d.Get("stand_by_redeploy").(string)) - if _, ok := d.GetOk("action"); ok { - createManageDrOptions.SetAction(d.Get("action").(string)) - } if _, ok := d.GetOk("api_key"); ok { createManageDrOptions.SetAPIKey(d.Get("api_key").(string)) } diff --git a/ibm/service/drautomationservice/resource_ibm_pdr_managedr_test.go b/ibm/service/drautomationservice/resource_ibm_pdr_managedr_test.go index e0a95decd0..486ca5258d 100644 --- a/ibm/service/drautomationservice/resource_ibm_pdr_managedr_test.go +++ b/ibm/service/drautomationservice/resource_ibm_pdr_managedr_test.go @@ -11,10 +11,10 @@ import ( "github.com/hashicorp/terraform-plugin-testing/helper/resource" "github.com/hashicorp/terraform-plugin-testing/terraform" + acc "github.com/IBM-Cloud/terraform-provider-ibm/ibm/acctest" "github.com/IBM-Cloud/terraform-provider-ibm/ibm/conns" "github.com/IBM-Cloud/terraform-provider-ibm/ibm/flex" "github.ibm.com/DRAutomation/dra-go-sdk/drautomationservicev1" - acc "github.com/IBM-Cloud/terraform-provider-ibm/ibm/acctest" ) func TestAccIBMPdrManagedrBasic(t *testing.T) { @@ -22,8 +22,8 @@ func TestAccIBMPdrManagedrBasic(t *testing.T) { instanceID := fmt.Sprintf("tf_instance_id_%d", acctest.RandIntRange(10, 100)) resource.Test(t, resource.TestCase{ - PreCheck: func() { acc.TestAccPreCheck(t) }, - Providers: acc.TestAccProviders, + PreCheck: func() { acc.TestAccPreCheck(t) }, + Providers: acc.TestAccProviders, Steps: []resource.TestStep{ resource.TestStep{ Config: testAccCheckIBMPdrManagedrConfigBasic(instanceID), @@ -45,8 +45,8 @@ func TestAccIBMPdrManagedrAllArgs(t *testing.T) { acceptsIncomplete := "true" resource.Test(t, resource.TestCase{ - PreCheck: func() { acc.TestAccPreCheck(t) }, - Providers: acc.TestAccProviders, + PreCheck: func() { acc.TestAccPreCheck(t) }, + Providers: acc.TestAccProviders, Steps: []resource.TestStep{ resource.TestStep{ Config: testAccCheckIBMPdrManagedrConfig(instanceID, standByRedeploy, acceptLanguage, ifNoneMatch, acceptsIncomplete), diff --git a/ibm/service/drautomationservice/resource_ibm_pdr_validate_apikey.go b/ibm/service/drautomationservice/resource_ibm_pdr_validate_apikey.go index 944a550b49..4992b4e388 100644 --- a/ibm/service/drautomationservice/resource_ibm_pdr_validate_apikey.go +++ b/ibm/service/drautomationservice/resource_ibm_pdr_validate_apikey.go @@ -42,9 +42,9 @@ func ResourceIBMPdrValidateApikey() *schema.Resource { Description: "The language requested for the return document.", }, "api_key": &schema.Schema{ - Type: schema.TypeString, - Required: true, - // ForceNew: true, + Type: schema.TypeString, + Required: true, + ForceNew: true, Sensitive: true, Description: "api key", }, @@ -83,6 +83,9 @@ func resourceIBMPdrValidateApikeyCreate(context context.Context, d *schema.Resou createApikeyOptions.SetInstanceID(d.Get("instance_id").(string)) createApikeyOptions.SetAPIKey(d.Get("api_key").(string)) + if _, ok := d.GetOk("accept_language"); ok { + createApikeyOptions.SetAcceptLanguage(d.Get("accept_language").(string)) + } validationKeyResponse, response, err := drAutomationServiceClient.CreateApikeyWithContext(context, createApikeyOptions) if err != nil { diff --git a/ibm/service/drautomationservice/resource_ibm_pdr_validate_apikey_test.go b/ibm/service/drautomationservice/resource_ibm_pdr_validate_apikey_test.go index 67ec0629a8..304065b2b5 100644 --- a/ibm/service/drautomationservice/resource_ibm_pdr_validate_apikey_test.go +++ b/ibm/service/drautomationservice/resource_ibm_pdr_validate_apikey_test.go @@ -11,10 +11,10 @@ import ( "github.com/hashicorp/terraform-plugin-testing/helper/resource" "github.com/hashicorp/terraform-plugin-testing/terraform" - acc "github.com/IBM-Cloud/terraform-provider-ibm/ibm/acctest" "github.com/IBM-Cloud/terraform-provider-ibm/ibm/conns" "github.com/IBM-Cloud/terraform-provider-ibm/ibm/flex" "github.ibm.com/DRAutomation/dra-go-sdk/drautomationservicev1" + acc "github.com/IBM-Cloud/terraform-provider-ibm/ibm/acctest" ) func TestAccIBMPdrValidateApikeyBasic(t *testing.T) { From ceadbd0ffb4a726d909fc1ba7872140ea04f3fb7 Mon Sep 17 00:00:00 2001 From: Mani-Raj-Langaru1 Date: Wed, 19 Nov 2025 04:57:07 -0500 Subject: [PATCH 06/13] resolved replace issue in go.mod file --- go.mod | 4 ++-- go.sum | 2 -- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/go.mod b/go.mod index 96db0a35e1..e63246207d 100644 --- a/go.mod +++ b/go.mod @@ -2,7 +2,7 @@ module github.com/IBM-Cloud/terraform-provider-ibm go 1.24.2 -replace github.ibm.com/DRAutomation/dra-go-sdk => ./ibm/service/dra-go-sdk +replace github.ibm.com/DRAutomation/dra-go-sdk => ./ibm/service/drautomationservice/dra-go-sdk require ( github.com/IBM-Cloud/bluemix-go v0.0.0-20250324085928-caa6511f0c13 @@ -63,7 +63,7 @@ require ( github.com/rook/rook/pkg/apis v0.0.0-20250619203122-80563e28b685 github.com/softlayer/softlayer-go v1.0.3 github.com/stretchr/testify v1.11.1 - github.ibm.com/DRAutomation/dra-go-sdk v0.0.0-20251104054047-090b5d3b82c6 + github.ibm.com/DRAutomation/dra-go-sdk v0.0.0-20251118093457-0d6f8c56680b golang.org/x/crypto v0.42.0 gopkg.in/yaml.v3 v3.0.1 gotest.tools v2.2.0+incompatible diff --git a/go.sum b/go.sum index a8bdbc1708..0586565ef5 100644 --- a/go.sum +++ b/go.sum @@ -1239,8 +1239,6 @@ github.com/zclconf/go-cty v1.16.3 h1:osr++gw2T61A8KVYHoQiFbFd1Lh3JOCXc/jFLJXKTxk github.com/zclconf/go-cty v1.16.3/go.mod h1:VvMs5i0vgZdhYawQNq5kePSpLAoz8u1xvZgrPIxfnZE= github.com/zclconf/go-cty-debug v0.0.0-20240509010212-0d6042c53940 h1:4r45xpDWB6ZMSMNJFMOjqrGHynW3DIBuR2H9j0ug+Mo= github.com/zclconf/go-cty-debug v0.0.0-20240509010212-0d6042c53940/go.mod h1:CmBdvvj3nqzfzJ6nTCIwDTPZ56aVGvDrmztiO5g3qrM= -github.ibm.com/DRAutomation/dra-go-sdk v0.0.0-20251118093457-0d6f8c56680b h1:2K0FOTwPQSxCG9ZQ6yln2J4Jo+qvAxawHbHIeQImWnw= -github.ibm.com/DRAutomation/dra-go-sdk v0.0.0-20251118093457-0d6f8c56680b/go.mod h1:elZ3feXTKo/gGNRHVxiSEL20xLkwRH8KYn5iWVa0yUw= go.etcd.io/bbolt v1.3.2/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU= go.etcd.io/bbolt v1.3.3/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU= go.etcd.io/bbolt v1.3.5/go.mod h1:G5EMThwa9y8QZGBClrRx5EY+Yw9kAhnjy3bSjsnlVTQ= From 9ba7eeb2b54d2d40df32cca3130b8ae5b2a0d778 Mon Sep 17 00:00:00 2001 From: Mani-Raj-Langaru1 Date: Wed, 19 Nov 2025 05:39:59 -0500 Subject: [PATCH 07/13] resolved go.mod issue --- go.mod | 6 +++--- go.sum | 19 ++++++------------- ...ta_source_ibm_pdr_get_dr_locations_test.go | 5 ++--- ...ce_ibm_pdr_get_dr_summary_response_test.go | 6 +++--- ...rce_ibm_pdr_get_grs_location_pairs_test.go | 2 +- ...a_source_ibm_pdr_get_machine_types_test.go | 2 +- ...urce_ibm_pdr_get_powervs_workspace_test.go | 5 ++--- ...data_source_ibm_pdr_last_operation_test.go | 3 +-- .../resource_ibm_pdr_validate_apikey_test.go | 2 +- 9 files changed, 20 insertions(+), 30 deletions(-) diff --git a/go.mod b/go.mod index b3798d4eba..195e8eb9a1 100644 --- a/go.mod +++ b/go.mod @@ -112,7 +112,7 @@ require ( github.com/go-ozzo/ozzo-validation/v4 v4.3.0 // indirect github.com/go-playground/locales v0.14.1 // indirect github.com/go-playground/universal-translator v0.18.1 // indirect - github.com/go-playground/validator/v10 v10.26.0 // indirect + github.com/go-playground/validator/v10 v10.27.0 // indirect github.com/go-test/deep v1.1.0 // indirect github.com/go-viper/mapstructure/v2 v2.4.0 // indirect github.com/gogo/protobuf v1.3.2 // indirect @@ -200,8 +200,8 @@ require ( go.opentelemetry.io/otel/trace v1.35.0 // indirect go.uber.org/automaxprocs v1.6.0 // indirect go.uber.org/ratelimit v0.2.0 // indirect - go.yaml.in/yaml/v2 v2.4.2 // indirect go.uber.org/zap v1.27.0 // indirect + go.yaml.in/yaml/v2 v2.4.2 // indirect golang.org/x/mod v0.27.0 // indirect golang.org/x/net v0.44.0 // indirect golang.org/x/oauth2 v0.27.0 // indirect @@ -214,7 +214,7 @@ require ( google.golang.org/appengine v1.6.8 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20250218202821-56aae31c358a // indirect google.golang.org/grpc v1.72.1 // indirect - google.golang.org/protobuf v1.36.6 // indirect + google.golang.org/protobuf v1.36.7 // indirect gopkg.in/evanphx/json-patch.v4 v4.12.0 // indirect gopkg.in/inf.v0 v0.9.1 // indirect gopkg.in/ini.v1 v1.67.0 // indirect diff --git a/go.sum b/go.sum index 17d650562d..9ffb8862fd 100644 --- a/go.sum +++ b/go.sum @@ -127,8 +127,8 @@ github.com/IBM/go-sdk-core/v5 v5.10.2/go.mod h1:WZPFasUzsKab/2mzt29xPcfruSk5js2y github.com/IBM/go-sdk-core/v5 v5.17.4/go.mod h1:KsAAI7eStAWwQa4F96MLy+whYSh39JzNjklZRbN/8ns= github.com/IBM/go-sdk-core/v5 v5.21.0 h1:DUnYhvC4SoC8T84rx5omnhY3+xcQg/Whyoa3mDPIMkk= github.com/IBM/go-sdk-core/v5 v5.21.0/go.mod h1:Q3BYO6iDA2zweQPDGbNTtqft5tDcEpm6RTuqMlPcvbw= -github.com/IBM/ibm-backup-recovery-sdk-go v1.0.3 h1:9TZHocmCfgmF8TGVrpP1kFyQbjcqLNW7+bM07lefpKQ= -github.com/IBM/ibm-backup-recovery-sdk-go v1.0.3/go.mod h1:jsYutWlnGysdCNoAk0zoIXb2vfKM9TmMpiUkI4pVuXY= +github.com/IBM/ibm-backup-recovery-sdk-go v1.0.5 h1:bVf67pkGi5dp8SQXMcam8c1JrEwNRkXVcz3FkaalmYg= +github.com/IBM/ibm-backup-recovery-sdk-go v1.0.5/go.mod h1:m+7lHOrXJwYPbrdxMmKl96tT7OJMMhpyKnQgnaCcy+w= github.com/IBM/ibm-cos-sdk-go v1.12.2 h1:71A4tDl8u6BZ548h71ecEe7fw5bBA7ECTVqYmeSQWQA= github.com/IBM/ibm-cos-sdk-go v1.12.2/go.mod h1:ODYcmrmdpjo5hVguq9RbD6xmC8xb1XZMG7NefUbJNcc= github.com/IBM/ibm-cos-sdk-go-config/v2 v2.3.0 h1:956Nqk0eKI3lq+AkzWXZDid4UZHRz0wWh1LwkleBsWk= @@ -168,8 +168,6 @@ github.com/IBM/vmware-go-sdk v0.1.5 h1:aQbwcJBceaaauuIoJ0OJn+ttwjb+QTX6XV9Jbrdpj github.com/IBM/vmware-go-sdk v0.1.5/go.mod h1:OyQKRInGGsBaOyE5LIZCqH7b1DZ01BvIYa8BgGy+wWo= github.com/IBM/vpc-beta-go-sdk v0.8.0 h1:cEPpv4iw3Ba5W2d0AWg3TIbKeJ8y1nPuUuibR5Jt9eE= github.com/IBM/vpc-beta-go-sdk v0.8.0/go.mod h1:hORgIyTFRzXrZIK9IohaWmCRBBlYiDRagsufi7M6akE= -github.com/IBM/vpc-go-sdk v0.74.1 h1:qkWwdlILx3ZVNWht96CdlPKwhKL/y3ItN6XmwJ1rShM= -github.com/IBM/vpc-go-sdk v0.74.1/go.mod h1:8lX6TpeYBbx1Vd4KTgM3PPQ4y3auGOPuD6qq3UBDdug= github.com/IBM/vpc-go-sdk v0.75.0 h1:8s11vR30n0eY9ptf6Osh9Bw13okhMVasb/KX9M52LEg= github.com/IBM/vpc-go-sdk v0.75.0/go.mod h1:8lX6TpeYBbx1Vd4KTgM3PPQ4y3auGOPuD6qq3UBDdug= github.com/Logicalis/asn1 v0.0.0-20190312173541-d60463189a56 h1:vuquMR410psHNax14XKNWa0Ae/kYgWJcXi0IFuX60N0= @@ -498,7 +496,6 @@ github.com/go-task/slim-sprig v0.0.0-20230315185526-52ccab3ef572/go.mod h1:9Pwr4 github.com/go-task/slim-sprig/v3 v3.0.0 h1:sUs3vkvUymDpBKi3qH1YSqBQk9+9D/8M2mN1vB6EwHI= github.com/go-task/slim-sprig/v3 v3.0.0/go.mod h1:W848ghGpv3Qj3dhTPRyJypKRiqCdHZiAzKg9hl15HA8= github.com/go-test/deep v1.0.2/go.mod h1:wGDj63lr65AM2AQyKZd/NYHGb0R+1RLqB8NKt3aSFNA= -github.com/go-test/deep v1.0.8 h1:TDsG77qcSprGbC6vTN8OuXp5g+J+b5Pcguhf7Zt61VM= github.com/go-test/deep v1.0.8/go.mod h1:5C2ZWiW0ErCdrYzpqxLbTX7MG14M9iiw8DgHncVwcsE= github.com/go-test/deep v1.1.0 h1:WOcxcdHcvdgThNXjw0t76K42FXTU7HpNQWHpA2HHNlg= github.com/go-test/deep v1.1.0/go.mod h1:5C2ZWiW0ErCdrYzpqxLbTX7MG14M9iiw8DgHncVwcsE= @@ -1277,8 +1274,8 @@ go.uber.org/ratelimit v0.2.0 h1:UQE2Bgi7p2B85uP5dC2bbRtig0C+OeNRnNEafLjsLPA= go.uber.org/ratelimit v0.2.0/go.mod h1:YYBV4e4naJvhpitQrWJu1vCpgB7CboMe0qhltKt6mUg= go.uber.org/zap v1.9.1/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q= go.uber.org/zap v1.10.0/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q= -go.uber.org/zap v1.26.0 h1:sI7k6L95XOKS281NhVKOFCUNIvv9e0w4BF8N3u+tCRo= -go.uber.org/zap v1.26.0/go.mod h1:dtElttAiwGvoJ/vj4IwHBS/gXsEu/pZ50mUIRWuG0so= +go.uber.org/zap v1.27.0 h1:aJMhYGrd5QSmlpLMr2MftRKl7t8J8PTZPA732ud/XR8= +go.uber.org/zap v1.27.0/go.mod h1:GB2qFLM7cTU87MWRP2mPIjqfIDnGu+VIO4V/SdhGo2E= go.yaml.in/yaml/v2 v2.4.2 h1:DzmwEr2rDGHl7lsFgAHxmNz/1NlQ7xLIrlN2h5d1eGI= go.yaml.in/yaml/v2 v2.4.2/go.mod h1:081UH+NErpNdqlCXm3TtEran0rJZGxAYx9hb/ELlsPU= go.yaml.in/yaml/v3 v3.0.4 h1:tfq32ie2Jv2UxXFdLJdh3jXuOzWiL1fo0bu/FbuKpbc= @@ -1366,7 +1363,6 @@ golang.org/x/mod v0.7.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= golang.org/x/mod v0.9.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= golang.org/x/mod v0.12.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= -golang.org/x/mod v0.14.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= golang.org/x/mod v0.27.0 h1:kb+q2PyFnEADO2IEF935ehFUXlWiNjJWtRNgBLSfbxQ= golang.org/x/mod v0.27.0/go.mod h1:rWI627Fq0DEoudcK+MBkNkCe0EetEaDSwJJkCcjpazc= golang.org/x/net v0.0.0-20170114055629-f2499483f923/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= @@ -1487,7 +1483,6 @@ golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJ golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.2.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.3.0/go.mod h1:FU7BRWz2tNW+3quACPkgCx/L+uEAv1htQ0V83Z9Rj+Y= -golang.org/x/sync v0.5.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= golang.org/x/sync v0.17.0 h1:l60nONMj9l5drqw6jlhIELNv9I0A4OFgRsG9k2oT9Ug= golang.org/x/sync v0.17.0/go.mod h1:9KTHXmSnoGruLpwFjVSX0lNNA75CykiMECbovNTZqGI= golang.org/x/sys v0.0.0-20170830134202-bb24a47a89ea/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= @@ -1742,8 +1737,6 @@ golang.org/x/tools v0.4.0/go.mod h1:UE5sM2OK9E/d67R0ANs2xJizIymRP5gJU295PvKXxjQ= golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU= golang.org/x/tools v0.7.0/go.mod h1:4pg6aUX35JBAogB10C9AtvVL+qowtN4pT3CGSQex14s= golang.org/x/tools v0.12.1-0.20230815132531-74c255bcf846/go.mod h1:Sc0INKfu04TlqNoRA1hgpFZbhYXHPr4V5DzpSBTPqQM= -golang.org/x/tools v0.13.0/go.mod h1:HvlwmtVNQAhOuCjW7xxvovg8wbNq7LwfXh/k7wXUl58= -golang.org/x/tools v0.16.1/go.mod h1:kYVVN6I1mBNoB1OX+noeBjbRk4IUEPa7JJ+TJMEooJ0= golang.org/x/tools v0.36.0 h1:kWS0uv/zsvHEle1LbV5LE8QujrxB3wfQyxHfhOk0Qkg= golang.org/x/tools v0.36.0/go.mod h1:WBDiHKJK8YgLHlcQPYQzNCkUxUypCaa5ZegCVutKm+s= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= @@ -1928,8 +1921,8 @@ google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQ google.golang.org/protobuf v1.27.1/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= google.golang.org/protobuf v1.28.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= google.golang.org/protobuf v1.28.1/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= -google.golang.org/protobuf v1.36.6 h1:z1NpPI8ku2WgiWnf+t9wTPsn6eP1L7ksHUlkfLvd9xY= -google.golang.org/protobuf v1.36.6/go.mod h1:jduwjTPXsFjZGTmRluh+L6NjiWu7pchiJ2/5YcXBHnY= +google.golang.org/protobuf v1.36.7 h1:IgrO7UwFQGJdRNXH/sQux4R1Dj1WAKcLElzeeRaXV2A= +google.golang.org/protobuf v1.36.7/go.mod h1:jduwjTPXsFjZGTmRluh+L6NjiWu7pchiJ2/5YcXBHnY= gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= diff --git a/ibm/service/drautomationservice/data_source_ibm_pdr_get_dr_locations_test.go b/ibm/service/drautomationservice/data_source_ibm_pdr_get_dr_locations_test.go index 24ca6dc209..223653a83b 100644 --- a/ibm/service/drautomationservice/data_source_ibm_pdr_get_dr_locations_test.go +++ b/ibm/service/drautomationservice/data_source_ibm_pdr_get_dr_locations_test.go @@ -3,7 +3,7 @@ /* * IBM OpenAPI Terraform Generator Version: 3.105.0-3c13b041-20250605-193116 -*/ + */ package drautomationservice_test @@ -13,11 +13,11 @@ import ( "github.com/hashicorp/terraform-plugin-testing/helper/resource" + acc "github.com/IBM-Cloud/terraform-provider-ibm/ibm/acctest" "github.com/IBM-Cloud/terraform-provider-ibm/ibm/service/drautomationservice" "github.com/IBM/go-sdk-core/v5/core" "github.com/stretchr/testify/assert" "github.ibm.com/DRAutomation/dra-go-sdk/drautomationservicev1" - acc "github.com/IBM-Cloud/terraform-provider-ibm/ibm/acctest" ) func TestAccIBMPdrGetDrLocationsDataSourceBasic(t *testing.T) { @@ -45,7 +45,6 @@ func testAccCheckIBMPdrGetDrLocationsDataSourceConfigBasic() string { `) } - func TestDataSourceIBMPdrGetDrLocationsDrLocationToMap(t *testing.T) { checkResult := func(result map[string]interface{}) { model := make(map[string]interface{}) diff --git a/ibm/service/drautomationservice/data_source_ibm_pdr_get_dr_summary_response_test.go b/ibm/service/drautomationservice/data_source_ibm_pdr_get_dr_summary_response_test.go index cfeb9180b5..3f69a735ee 100644 --- a/ibm/service/drautomationservice/data_source_ibm_pdr_get_dr_summary_response_test.go +++ b/ibm/service/drautomationservice/data_source_ibm_pdr_get_dr_summary_response_test.go @@ -3,7 +3,7 @@ /* * IBM OpenAPI Terraform Generator Version: 3.105.0-3c13b041-20250605-193116 -*/ + */ package drautomationservice_test @@ -13,12 +13,12 @@ import ( "github.com/hashicorp/terraform-plugin-testing/helper/resource" + acc "github.com/IBM-Cloud/terraform-provider-ibm/ibm/acctest" "github.com/IBM-Cloud/terraform-provider-ibm/ibm/service/drautomationservice" + . "github.com/IBM-Cloud/terraform-provider-ibm/ibm/unittest" "github.com/IBM/go-sdk-core/v5/core" "github.com/stretchr/testify/assert" "github.ibm.com/DRAutomation/dra-go-sdk/drautomationservicev1" - . "github.com/IBM-Cloud/terraform-provider-ibm/ibm/unittest" - acc "github.com/IBM-Cloud/terraform-provider-ibm/ibm/acctest" ) func TestAccIBMPdrGetDrSummaryResponseDataSourceBasic(t *testing.T) { diff --git a/ibm/service/drautomationservice/data_source_ibm_pdr_get_grs_location_pairs_test.go b/ibm/service/drautomationservice/data_source_ibm_pdr_get_grs_location_pairs_test.go index 54ae30ce4d..31b68d9730 100644 --- a/ibm/service/drautomationservice/data_source_ibm_pdr_get_grs_location_pairs_test.go +++ b/ibm/service/drautomationservice/data_source_ibm_pdr_get_grs_location_pairs_test.go @@ -3,7 +3,7 @@ /* * IBM OpenAPI Terraform Generator Version: 3.105.0-3c13b041-20250605-193116 -*/ + */ package drautomationservice_test diff --git a/ibm/service/drautomationservice/data_source_ibm_pdr_get_machine_types_test.go b/ibm/service/drautomationservice/data_source_ibm_pdr_get_machine_types_test.go index 764b847793..784fa40066 100644 --- a/ibm/service/drautomationservice/data_source_ibm_pdr_get_machine_types_test.go +++ b/ibm/service/drautomationservice/data_source_ibm_pdr_get_machine_types_test.go @@ -3,7 +3,7 @@ /* * IBM OpenAPI Terraform Generator Version: 3.105.0-3c13b041-20250605-193116 -*/ + */ package drautomationservice_test diff --git a/ibm/service/drautomationservice/data_source_ibm_pdr_get_powervs_workspace_test.go b/ibm/service/drautomationservice/data_source_ibm_pdr_get_powervs_workspace_test.go index 958a4cf34e..ae5cba9026 100644 --- a/ibm/service/drautomationservice/data_source_ibm_pdr_get_powervs_workspace_test.go +++ b/ibm/service/drautomationservice/data_source_ibm_pdr_get_powervs_workspace_test.go @@ -3,7 +3,7 @@ /* * IBM OpenAPI Terraform Generator Version: 3.105.0-3c13b041-20250605-193116 -*/ + */ package drautomationservice_test @@ -13,11 +13,11 @@ import ( "github.com/hashicorp/terraform-plugin-testing/helper/resource" + acc "github.com/IBM-Cloud/terraform-provider-ibm/ibm/acctest" "github.com/IBM-Cloud/terraform-provider-ibm/ibm/service/drautomationservice" "github.com/IBM/go-sdk-core/v5/core" "github.com/stretchr/testify/assert" "github.ibm.com/DRAutomation/dra-go-sdk/drautomationservicev1" - acc "github.com/IBM-Cloud/terraform-provider-ibm/ibm/acctest" ) func TestAccIBMPdrGetPowervsWorkspaceDataSourceBasic(t *testing.T) { @@ -49,7 +49,6 @@ func testAccCheckIBMPdrGetPowervsWorkspaceDataSourceConfigBasic() string { `) } - func TestDataSourceIBMPdrGetPowervsWorkspaceDrStandbyWorkspaceToMap(t *testing.T) { checkResult := func(result map[string]interface{}) { detailsDrModel := make(map[string]interface{}) diff --git a/ibm/service/drautomationservice/data_source_ibm_pdr_last_operation_test.go b/ibm/service/drautomationservice/data_source_ibm_pdr_last_operation_test.go index ae3c45b5b7..3be8040f71 100644 --- a/ibm/service/drautomationservice/data_source_ibm_pdr_last_operation_test.go +++ b/ibm/service/drautomationservice/data_source_ibm_pdr_last_operation_test.go @@ -3,7 +3,7 @@ /* * IBM OpenAPI Terraform Generator Version: 3.105.0-3c13b041-20250605-193116 -*/ + */ package drautomationservice_test @@ -58,4 +58,3 @@ func testAccCheckIBMPdrLastOperationDataSourceConfigBasic() string { } `) } - diff --git a/ibm/service/drautomationservice/resource_ibm_pdr_validate_apikey_test.go b/ibm/service/drautomationservice/resource_ibm_pdr_validate_apikey_test.go index 304065b2b5..67ec0629a8 100644 --- a/ibm/service/drautomationservice/resource_ibm_pdr_validate_apikey_test.go +++ b/ibm/service/drautomationservice/resource_ibm_pdr_validate_apikey_test.go @@ -11,10 +11,10 @@ import ( "github.com/hashicorp/terraform-plugin-testing/helper/resource" "github.com/hashicorp/terraform-plugin-testing/terraform" + acc "github.com/IBM-Cloud/terraform-provider-ibm/ibm/acctest" "github.com/IBM-Cloud/terraform-provider-ibm/ibm/conns" "github.com/IBM-Cloud/terraform-provider-ibm/ibm/flex" "github.ibm.com/DRAutomation/dra-go-sdk/drautomationservicev1" - acc "github.com/IBM-Cloud/terraform-provider-ibm/ibm/acctest" ) func TestAccIBMPdrValidateApikeyBasic(t *testing.T) { From 2e7d655504a0ee9c95210410e019735dd2ea9791 Mon Sep 17 00:00:00 2001 From: Mani-Raj-Langaru1 Date: Wed, 19 Nov 2025 05:53:48 -0500 Subject: [PATCH 08/13] Add dra-go-sdk as normal source code --- ibm/service/drautomationservice/dra-go-sdk | 1 - .../dra-go-sdk/.bumpversion.toml | 14 + .../dra-go-sdk/.cra/.cveignore | 2 + .../dra-go-sdk/.gitattributes | 1 + .../.github/ISSUE_TEMPLATE/bug_report.md | 30 + .../.github/ISSUE_TEMPLATE/feature_request.md | 20 + .../.github/pull_request_template.md | 34 + .../drautomationservice/dra-go-sdk/.gitignore | 25 + .../dra-go-sdk/.golangci.yaml | 13 + .../drautomationservice/dra-go-sdk/.npmrc | 1 + .../drautomationservice/dra-go-sdk/.releaserc | 23 + .../dra-go-sdk/.secrets.baseline | 270 ++ .../dra-go-sdk/.travis.yml | 39 + .../dra-go-sdk/.whitesource | 3 + .../drautomationservice/dra-go-sdk/CODEOWNERS | 8 + .../dra-go-sdk/CODE_OF_CONDUCT.md | 76 + .../dra-go-sdk/CONTRIBUTING.md | 14 + .../drautomationservice/dra-go-sdk/LICENSE | 201 + .../drautomationservice/dra-go-sdk/Makefile | 27 + .../drautomationservice/dra-go-sdk/README.md | 103 + .../dra-go-sdk/common/headers.go | 89 + .../dra-go-sdk/common/headers_test.go | 43 + .../dra-go-sdk/common/version.go | 20 + ...ice_provision_deprovision_examples_test.go | 143 + .../dr_automation_service_v1.go | 3448 ++++++++++++++ ...omation_service_v1_custom_examples_test.go | 254 + .../dr_automation_service_v1_examples_test.go | 427 ++ ..._automation_service_v1_integration_test.go | 385 ++ .../dr_automation_service_v1_suite_test.go | 29 + .../dr_automation_service_v1_test.go | 4086 +++++++++++++++++ .../drautomationservice/dra-go-sdk/go.mod | 41 + .../drautomationservice/dra-go-sdk/go.sum | 155 + .../dra-go-sdk/package.json | 18 + 33 files changed, 10042 insertions(+), 1 deletion(-) delete mode 160000 ibm/service/drautomationservice/dra-go-sdk create mode 100644 ibm/service/drautomationservice/dra-go-sdk/.bumpversion.toml create mode 100644 ibm/service/drautomationservice/dra-go-sdk/.cra/.cveignore create mode 100644 ibm/service/drautomationservice/dra-go-sdk/.gitattributes create mode 100644 ibm/service/drautomationservice/dra-go-sdk/.github/ISSUE_TEMPLATE/bug_report.md create mode 100644 ibm/service/drautomationservice/dra-go-sdk/.github/ISSUE_TEMPLATE/feature_request.md create mode 100644 ibm/service/drautomationservice/dra-go-sdk/.github/pull_request_template.md create mode 100644 ibm/service/drautomationservice/dra-go-sdk/.gitignore create mode 100644 ibm/service/drautomationservice/dra-go-sdk/.golangci.yaml create mode 100644 ibm/service/drautomationservice/dra-go-sdk/.npmrc create mode 100644 ibm/service/drautomationservice/dra-go-sdk/.releaserc create mode 100644 ibm/service/drautomationservice/dra-go-sdk/.secrets.baseline create mode 100644 ibm/service/drautomationservice/dra-go-sdk/.travis.yml create mode 100644 ibm/service/drautomationservice/dra-go-sdk/.whitesource create mode 100644 ibm/service/drautomationservice/dra-go-sdk/CODEOWNERS create mode 100644 ibm/service/drautomationservice/dra-go-sdk/CODE_OF_CONDUCT.md create mode 100644 ibm/service/drautomationservice/dra-go-sdk/CONTRIBUTING.md create mode 100644 ibm/service/drautomationservice/dra-go-sdk/LICENSE create mode 100644 ibm/service/drautomationservice/dra-go-sdk/Makefile create mode 100644 ibm/service/drautomationservice/dra-go-sdk/README.md create mode 100644 ibm/service/drautomationservice/dra-go-sdk/common/headers.go create mode 100644 ibm/service/drautomationservice/dra-go-sdk/common/headers_test.go create mode 100644 ibm/service/drautomationservice/dra-go-sdk/common/version.go create mode 100644 ibm/service/drautomationservice/dra-go-sdk/drautomationservicev1/dr_automation_service_provision_deprovision_examples_test.go create mode 100644 ibm/service/drautomationservice/dra-go-sdk/drautomationservicev1/dr_automation_service_v1.go create mode 100644 ibm/service/drautomationservice/dra-go-sdk/drautomationservicev1/dr_automation_service_v1_custom_examples_test.go create mode 100644 ibm/service/drautomationservice/dra-go-sdk/drautomationservicev1/dr_automation_service_v1_examples_test.go create mode 100644 ibm/service/drautomationservice/dra-go-sdk/drautomationservicev1/dr_automation_service_v1_integration_test.go create mode 100644 ibm/service/drautomationservice/dra-go-sdk/drautomationservicev1/dr_automation_service_v1_suite_test.go create mode 100644 ibm/service/drautomationservice/dra-go-sdk/drautomationservicev1/dr_automation_service_v1_test.go create mode 100644 ibm/service/drautomationservice/dra-go-sdk/go.mod create mode 100644 ibm/service/drautomationservice/dra-go-sdk/go.sum create mode 100644 ibm/service/drautomationservice/dra-go-sdk/package.json diff --git a/ibm/service/drautomationservice/dra-go-sdk b/ibm/service/drautomationservice/dra-go-sdk deleted file mode 160000 index 0d6f8c5668..0000000000 --- a/ibm/service/drautomationservice/dra-go-sdk +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 0d6f8c56680bd309f771da71bfaf6c30de90c2f8 diff --git a/ibm/service/drautomationservice/dra-go-sdk/.bumpversion.toml b/ibm/service/drautomationservice/dra-go-sdk/.bumpversion.toml new file mode 100644 index 0000000000..11be1347c6 --- /dev/null +++ b/ibm/service/drautomationservice/dra-go-sdk/.bumpversion.toml @@ -0,0 +1,14 @@ +[tool.bumpversion] +current_version = "0.0.1" +commit = true +message = "Update version {current_version} -> {new_version} [skip ci]" + +[[tool.bumpversion.files]] +filename = "common/version.go" +search = "const Version = \"{current_version}\"" +replace = "const Version = \"{new_version}\"" + +[[tool.bumpversion.files]] +filename = "README.md" +search = "{current_version}" +replace = "{new_version}" diff --git a/ibm/service/drautomationservice/dra-go-sdk/.cra/.cveignore b/ibm/service/drautomationservice/dra-go-sdk/.cra/.cveignore new file mode 100644 index 0000000000..0d4f101c7a --- /dev/null +++ b/ibm/service/drautomationservice/dra-go-sdk/.cra/.cveignore @@ -0,0 +1,2 @@ +[ +] diff --git a/ibm/service/drautomationservice/dra-go-sdk/.gitattributes b/ibm/service/drautomationservice/dra-go-sdk/.gitattributes new file mode 100644 index 0000000000..7d2b3cf960 --- /dev/null +++ b/ibm/service/drautomationservice/dra-go-sdk/.gitattributes @@ -0,0 +1 @@ +*.enc binary diff --git a/ibm/service/drautomationservice/dra-go-sdk/.github/ISSUE_TEMPLATE/bug_report.md b/ibm/service/drautomationservice/dra-go-sdk/.github/ISSUE_TEMPLATE/bug_report.md new file mode 100644 index 0000000000..354f6421d0 --- /dev/null +++ b/ibm/service/drautomationservice/dra-go-sdk/.github/ISSUE_TEMPLATE/bug_report.md @@ -0,0 +1,30 @@ +--- +name: Bug report +about: Create a bug report to help us improve +title: '' +labels: '' +assignees: '' + +--- + +**Describe the bug** +A clear and concise description of what the bug is. + +**To Reproduce** +List the steps that can be used to demonstrate the bug. Include the name of the service and operation that you're trying to invoke, if applicable. Be sure to describe any relevant info regarding parameter values used with your API invocation. + +**Expected behavior** +A clear and concise description of what you expected to happen. + +**Screenshots** +If applicable, add screenshots to help explain your problem. + +**Must gather (please complete the following information):** + - SDK Version [e.g. 1.2.1] + - Go Version [e.g. 1.12.15] + - Name of service that you're trying to use (if applicable) + - Name of operation that you're trying to invoke (if applicable) + +**Additional context** +Add any other context about the problem here. +Were you able to avoid the problem by changing your application code slightly? diff --git a/ibm/service/drautomationservice/dra-go-sdk/.github/ISSUE_TEMPLATE/feature_request.md b/ibm/service/drautomationservice/dra-go-sdk/.github/ISSUE_TEMPLATE/feature_request.md new file mode 100644 index 0000000000..bbcbbe7d61 --- /dev/null +++ b/ibm/service/drautomationservice/dra-go-sdk/.github/ISSUE_TEMPLATE/feature_request.md @@ -0,0 +1,20 @@ +--- +name: Feature request +about: Suggest an idea for this project +title: '' +labels: '' +assignees: '' + +--- + +**Is your feature request related to a problem? Please describe.** +A clear and concise description of what the problem is. Ex. I'm always frustrated when [...] + +**Describe the solution you'd like** +A clear and concise description of what you want to happen. + +**Describe alternatives you've considered** +A clear and concise description of any alternative solutions or features you've considered. + +**Additional context** +Add any other context or screenshots about the feature request here. diff --git a/ibm/service/drautomationservice/dra-go-sdk/.github/pull_request_template.md b/ibm/service/drautomationservice/dra-go-sdk/.github/pull_request_template.md new file mode 100644 index 0000000000..14f0debdc0 --- /dev/null +++ b/ibm/service/drautomationservice/dra-go-sdk/.github/pull_request_template.md @@ -0,0 +1,34 @@ +## PR summary + + +## PR Checklist +Please make sure that your PR fulfills the following requirements: +- [ ] The commit message follows the [Angular Commit Message Guidelines](https://github.com/angular/angular/blob/master/CONTRIBUTING.md#-commit-message-guidelines). +- [ ] Tests for the changes have been added (for bug fixes / features) +- [ ] Docs have been added / updated (for bug fixes / features) + +## PR Type + +- [ ] Bugfix +- [ ] Feature +- [ ] Code style update (formatting, local variables) +- [ ] Refactoring (no functional changes, no api changes) +- [ ] New tests +- [ ] Build/CI related changes +- [ ] Documentation content changes +- [ ] Other (please describe) + +## What is the current behavior? + + +## What is the new behavior? + + +## Does this PR introduce a breaking change? +- [ ] Yes +- [ ] No + + + +## Other information + \ No newline at end of file diff --git a/ibm/service/drautomationservice/dra-go-sdk/.gitignore b/ibm/service/drautomationservice/dra-go-sdk/.gitignore new file mode 100644 index 0000000000..c526427e82 --- /dev/null +++ b/ibm/service/drautomationservice/dra-go-sdk/.gitignore @@ -0,0 +1,25 @@ +.DS_Store +.env + +# ignore vendor/ +vendor/ + +# SDK generator +.openapi-generator-ignore +.openapi-generator/VERSION +/.project + +# credentials files +*.env + +# IDE files +*.idea +.vscode/ +*.log + +# coverage +coverage.txt + +# files produced by "npm install" commands during build +package-lock.json +node_modules/ diff --git a/ibm/service/drautomationservice/dra-go-sdk/.golangci.yaml b/ibm/service/drautomationservice/dra-go-sdk/.golangci.yaml new file mode 100644 index 0000000000..1c6ec57688 --- /dev/null +++ b/ibm/service/drautomationservice/dra-go-sdk/.golangci.yaml @@ -0,0 +1,13 @@ +linters: + enable: + - gosec + +run: + timeout: 5m + +issues: + exclude-rules: + # Skip test files when running the gosec linter. + - path: (.+)_test\.go + linters: + - gosec diff --git a/ibm/service/drautomationservice/dra-go-sdk/.npmrc b/ibm/service/drautomationservice/dra-go-sdk/.npmrc new file mode 100644 index 0000000000..43c97e719a --- /dev/null +++ b/ibm/service/drautomationservice/dra-go-sdk/.npmrc @@ -0,0 +1 @@ +package-lock=false diff --git a/ibm/service/drautomationservice/dra-go-sdk/.releaserc b/ibm/service/drautomationservice/dra-go-sdk/.releaserc new file mode 100644 index 0000000000..beaf21f01a --- /dev/null +++ b/ibm/service/drautomationservice/dra-go-sdk/.releaserc @@ -0,0 +1,23 @@ +{ + "debug": true, + "branches": [ "main" ], + "plugins": [ + "@semantic-release/commit-analyzer", + "@semantic-release/release-notes-generator", + "@semantic-release/changelog", + [ + "@semantic-release/exec", + { + "prepareCmd": "bump-my-version bump --allow-dirty --current-version ${lastRelease.version} --new-version ${nextRelease.version}" + } + ], + [ + "@semantic-release/git", + { + "assets" : [ "CHANGELOG.md" ], + "message": "chore(release): ${nextRelease.version} release notes [skip ci]\n\n${nextRelease.notes}" + } + ], + "@semantic-release/github" + ] +} diff --git a/ibm/service/drautomationservice/dra-go-sdk/.secrets.baseline b/ibm/service/drautomationservice/dra-go-sdk/.secrets.baseline new file mode 100644 index 0000000000..a1e8138cb1 --- /dev/null +++ b/ibm/service/drautomationservice/dra-go-sdk/.secrets.baseline @@ -0,0 +1,270 @@ +{ + "exclude": { + "files": "go.sum|^.secrets.baseline$|.cra/.cveignore", + "lines": null + }, + "generated_at": "2025-10-25T06:42:38Z", + "plugins_used": [ + { + "name": "AWSKeyDetector" + }, + { + "name": "ArtifactoryDetector" + }, + { + "base64_limit": 4.5, + "name": "Base64HighEntropyString" + }, + { + "name": "BasicAuthDetector" + }, + { + "name": "BoxDetector" + }, + { + "name": "CloudantDetector" + }, + { + "ghe_instance": "github.ibm.com", + "name": "GheDetector" + }, + { + "hex_limit": 3, + "name": "HexHighEntropyString" + }, + { + "name": "IbmCloudIamDetector" + }, + { + "name": "IbmCosHmacDetector" + }, + { + "name": "JwtTokenDetector" + }, + { + "keyword_exclude": null, + "name": "KeywordDetector" + }, + { + "name": "MailchimpDetector" + }, + { + "name": "PrivateKeyDetector" + }, + { + "name": "SlackDetector" + }, + { + "name": "SoftlayerDetector" + }, + { + "name": "StripeDetector" + }, + { + "name": "TwilioKeyDetector" + } + ], + "results": { + "drautomationservicev1/dr_automation_service_provision_deprovision_examples_test.go": [ + { + "hashed_secret": "78f0aa93871c89936d704d3b952120c56a54fa10", + "is_secret": false, + "is_verified": false, + "line_number": 22, + "type": "Hex High Entropy String", + "verified_result": null + }, + { + "hashed_secret": "63fd038655cf061dee83085f8d902d1045300b36", + "is_secret": false, + "is_verified": false, + "line_number": 34, + "type": "Secret Keyword", + "verified_result": null + }, + { + "hashed_secret": "3fa4fc540742cddaf407be3d5c1473cff0033e1e", + "is_secret": false, + "is_verified": false, + "line_number": 53, + "type": "Secret Keyword", + "verified_result": null + } + ], + "drautomationservicev1/dr_automation_service_v1.go": [ + { + "hashed_secret": "32c204f2ec2fd1f1146d9eb40c65f625fd24e0b5", + "is_secret": false, + "is_verified": false, + "line_number": 174, + "type": "Secret Keyword", + "verified_result": null + }, + { + "hashed_secret": "e204d28a2874f6123747650d3e4003d4357d75eb", + "is_secret": false, + "is_verified": false, + "line_number": 249, + "type": "Secret Keyword", + "verified_result": null + }, + { + "hashed_secret": "b0caa0271bda35b09c45155df3832b056255bc96", + "is_secret": false, + "is_verified": false, + "line_number": 302, + "type": "Secret Keyword", + "verified_result": null + }, + { + "hashed_secret": "f0f9776696ad22d22eaac21090596c8ff9908a80", + "is_secret": false, + "is_verified": false, + "line_number": 335, + "type": "Secret Keyword", + "verified_result": null + }, + { + "hashed_secret": "5c83780c979575bd469ca376e09f90dbb544d95b", + "is_secret": false, + "is_verified": false, + "line_number": 388, + "type": "Secret Keyword", + "verified_result": null + }, + { + "hashed_secret": "d3757d3106316a04a77f2958c69da829bc883d09", + "is_secret": false, + "is_verified": false, + "line_number": 1016, + "type": "Secret Keyword", + "verified_result": null + }, + { + "hashed_secret": "ba5bf2618937ee2bb431d7f6452bcb6657a3482d", + "is_secret": false, + "is_verified": false, + "line_number": 1022, + "type": "Secret Keyword", + "verified_result": null + }, + { + "hashed_secret": "4770fa23bfb6c07339814f001b1c0d6fb1dee2d0", + "is_secret": false, + "is_verified": false, + "line_number": 1043, + "type": "Secret Keyword", + "verified_result": null + }, + { + "hashed_secret": "8e766b88a3c9ca1cb944ba338737b5f69f1206b5", + "is_secret": false, + "is_verified": false, + "line_number": 1061, + "type": "Secret Keyword", + "verified_result": null + }, + { + "hashed_secret": "6452e7c5a42f97b00af1a210afc7d4de315e57ec", + "is_secret": false, + "is_verified": false, + "line_number": 3395, + "type": "Secret Keyword", + "verified_result": null + } + ], + "drautomationservicev1/dr_automation_service_v1_custom_examples_test.go": [ + { + "hashed_secret": "811424347556b661512671f7a53aafa6aaf03ca2", + "is_secret": false, + "is_verified": false, + "line_number": 19, + "type": "Secret Keyword", + "verified_result": null + }, + { + "hashed_secret": "ecb47e6f477780b52e724c150175f80956ef19bd", + "is_secret": false, + "is_verified": false, + "line_number": 389, + "type": "Base64 High Entropy String", + "verified_result": null + } + ], + "drautomationservicev1/dr_automation_service_v1_examples_test.go": [ + { + "hashed_secret": "811424347556b661512671f7a53aafa6aaf03ca2", + "is_secret": false, + "is_verified": false, + "line_number": 37, + "type": "Secret Keyword", + "verified_result": null + }, + { + "hashed_secret": "ecb47e6f477780b52e724c150175f80956ef19bd", + "is_secret": false, + "is_verified": false, + "line_number": 344, + "type": "Base64 High Entropy String", + "verified_result": null + } + ], + "drautomationservicev1/dr_automation_service_v1_integration_test.go": [ + { + "hashed_secret": "2c153ebbe6cb5b68bcb51f1e2d1186e4cb54e028", + "is_secret": false, + "is_verified": false, + "line_number": 288, + "type": "Base64 High Entropy String", + "verified_result": null + } + ], + "drautomationservicev1/dr_automation_service_v1_test.go": [ + { + "hashed_secret": "1f5e25be9b575e9f5d39c82dfd1d9f4d73f1975c", + "is_secret": false, + "is_verified": false, + "line_number": 59, + "type": "Secret Keyword", + "verified_result": null + }, + { + "hashed_secret": "55512dd2d5fb5ed9c570d011da4e63e087ab7862", + "is_secret": false, + "is_verified": false, + "line_number": 3751, + "type": "Secret Keyword", + "verified_result": null + }, + { + "hashed_secret": "2c153ebbe6cb5b68bcb51f1e2d1186e4cb54e028", + "is_secret": false, + "is_verified": false, + "line_number": 3807, + "type": "Base64 High Entropy String", + "verified_result": null + }, + { + "hashed_secret": "421586bc25f1b16dee534505adc9813acf3578bb", + "is_secret": false, + "is_verified": false, + "line_number": 4009, + "type": "Secret Keyword", + "verified_result": null + }, + { + "hashed_secret": "86f528ff713b453058af8e761eac1ab0be09646f", + "is_secret": false, + "is_verified": false, + "line_number": 4027, + "type": "Base64 High Entropy String", + "verified_result": null + } + ] + }, + "version": "0.13.1+ibm.64.dss", + "word_list": { + "file": null, + "hash": null + } +} diff --git a/ibm/service/drautomationservice/dra-go-sdk/.travis.yml b/ibm/service/drautomationservice/dra-go-sdk/.travis.yml new file mode 100644 index 0000000000..54ae2c006b --- /dev/null +++ b/ibm/service/drautomationservice/dra-go-sdk/.travis.yml @@ -0,0 +1,39 @@ +language: go + +dist: focal + +# Remove this if using external Travis +group: focal + +go: + - 1.23.x + - 1.24.x + + +notifications: + email: true + +before_install: + - pyenv global 3.8 + +install: + - curl -sfL https://raw.githubusercontent.com/golangci/golangci-lint/master/install.sh| sh -s -- -b $(go env GOPATH)/bin v1.64.4 + +script: + - make travis-ci + +# To enable semantic-release, uncomment these sections. +# before_deploy: +# - nvm install 18 +# - node --version +# - npm --version +# - npm install +# - pip install --user bump-my-version +# +# deploy: +# - provider: script +# script: npm run semantic-release +# skip_cleanup: true +# on: +# go: '1.23.x' +# branch: main diff --git a/ibm/service/drautomationservice/dra-go-sdk/.whitesource b/ibm/service/drautomationservice/dra-go-sdk/.whitesource new file mode 100644 index 0000000000..545628a1f3 --- /dev/null +++ b/ibm/service/drautomationservice/dra-go-sdk/.whitesource @@ -0,0 +1,3 @@ +{ + "settingsInheritedFrom": "whitesource-config/whitesource-config@master" +} \ No newline at end of file diff --git a/ibm/service/drautomationservice/dra-go-sdk/CODEOWNERS b/ibm/service/drautomationservice/dra-go-sdk/CODEOWNERS new file mode 100644 index 0000000000..1467177a60 --- /dev/null +++ b/ibm/service/drautomationservice/dra-go-sdk/CODEOWNERS @@ -0,0 +1,8 @@ +# This is a comment. +# Each line is a file pattern followed by one or more owners. + +# These owners will be the default owners for everything in +# the repo. Unless a later match takes precedence, +# @global-owner1 and @global-owner2 will be requested for +# review when someone opens a pull request. +* Vijay.Yalamuri1@ibm.com rajan.gahlout1@ibm.com Ravi.Kumar92@ibm.com diff --git a/ibm/service/drautomationservice/dra-go-sdk/CODE_OF_CONDUCT.md b/ibm/service/drautomationservice/dra-go-sdk/CODE_OF_CONDUCT.md new file mode 100644 index 0000000000..01ca05c1c8 --- /dev/null +++ b/ibm/service/drautomationservice/dra-go-sdk/CODE_OF_CONDUCT.md @@ -0,0 +1,76 @@ +# Contributor Covenant Code of Conduct + +## Our Pledge + +In the interest of fostering an open and welcoming environment, we as +contributors and maintainers pledge to making participation in our project and +our community a harassment-free experience for everyone, regardless of age, body +size, disability, ethnicity, sex characteristics, gender identity and expression, +level of experience, education, socio-economic status, nationality, personal +appearance, race, religion, or sexual identity and orientation. + +## Our Standards + +Examples of behavior that contributes to creating a positive environment +include: + +* Using welcoming and inclusive language +* Being respectful of differing viewpoints and experiences +* Gracefully accepting constructive criticism +* Focusing on what is best for the community +* Showing empathy towards other community members + +Examples of unacceptable behavior by participants include: + +* The use of sexualized language or imagery and unwelcome sexual attention or + advances +* Trolling, insulting/derogatory comments, and personal or political attacks +* Public or private harassment +* Publishing others' private information, such as a physical or electronic + address, without explicit permission +* Other conduct which could reasonably be considered inappropriate in a + professional setting + +## Our Responsibilities + +Project maintainers are responsible for clarifying the standards of acceptable +behavior and are expected to take appropriate and fair corrective action in +response to any instances of unacceptable behavior. + +Project maintainers have the right and responsibility to remove, edit, or +reject comments, commits, code, wiki edits, issues, and other contributions +that are not aligned to this Code of Conduct, or to ban temporarily or +permanently any contributor for other behaviors that they deem inappropriate, +threatening, offensive, or harmful. + +## Scope + +This Code of Conduct applies both within project spaces and in public spaces +when an individual is representing the project or its community. Examples of +representing a project or community include using an official project e-mail +address, posting via an official social media account, or acting as an appointed +representative at an online or offline event. Representation of a project may be +further defined and clarified by project maintainers. + +## Enforcement + +Instances of abusive, harassing, or otherwise unacceptable behavior may be +reported by contacting the project team at devxsdk@us.ibm.com. All +complaints will be reviewed and investigated and will result in a response that +is deemed necessary and appropriate to the circumstances. The project team is +obligated to maintain confidentiality with regard to the reporter of an incident. +Further details of specific enforcement policies may be posted separately. + +Project maintainers who do not follow or enforce the Code of Conduct in good +faith may face temporary or permanent repercussions as determined by other +members of the project's leadership. + +## Attribution + +This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4, +available at https://www.contributor-covenant.org/version/1/4/code-of-conduct.html + +[homepage]: https://www.contributor-covenant.org + +For answers to common questions about this code of conduct, see +https://www.contributor-covenant.org/faq diff --git a/ibm/service/drautomationservice/dra-go-sdk/CONTRIBUTING.md b/ibm/service/drautomationservice/dra-go-sdk/CONTRIBUTING.md new file mode 100644 index 0000000000..a2fa0a3fc0 --- /dev/null +++ b/ibm/service/drautomationservice/dra-go-sdk/CONTRIBUTING.md @@ -0,0 +1,14 @@ +# Questions +If you are having problems using the APIs or have a question about IBM Cloud services, +please ask a question at +[Stack Overflow](http://stackoverflow.com/questions/ask?tags=ibm-cloud). + +# Issues +If you encounter an issue with the project, you are welcome to submit a +[bug report](https://github.ibm.com/DRAutomation/dra-go-sdk/issues). +Before that, please search for similar issues. It's possible that someone has already reported the problem. + +# General Information +For general guidance on contributing to this project, please see +[this link](https://github.com/IBM/ibm-cloud-sdk-common/blob/main/CONTRIBUTING_go.md) + diff --git a/ibm/service/drautomationservice/dra-go-sdk/LICENSE b/ibm/service/drautomationservice/dra-go-sdk/LICENSE new file mode 100644 index 0000000000..261eeb9e9f --- /dev/null +++ b/ibm/service/drautomationservice/dra-go-sdk/LICENSE @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/ibm/service/drautomationservice/dra-go-sdk/Makefile b/ibm/service/drautomationservice/dra-go-sdk/Makefile new file mode 100644 index 0000000000..e403622416 --- /dev/null +++ b/ibm/service/drautomationservice/dra-go-sdk/Makefile @@ -0,0 +1,27 @@ +# Makefile to build the project +GO=go +LINT=golangci-lint +LINTOPTS= +TEST_TAGS= +COVERAGE=-coverprofile=coverage.txt -covermode=atomic + +all: tidy test lint +travis-ci: tidy test-cov lint + +test: + ${GO} test ./... ${TEST_TAGS} + +test-cov: + ${GO} test ./... ${TEST_TAGS} ${COVERAGE} + +test-int: + ${GO} test ./... -tags=integration + +test-int-cov: + ${GO} test ./... -tags=integration ${COVERAGE} + +lint: + ${LINT} run --build-tags=integration,examples ${LINTOPTS} + +tidy: + ${GO} mod tidy diff --git a/ibm/service/drautomationservice/dra-go-sdk/README.md b/ibm/service/drautomationservice/dra-go-sdk/README.md new file mode 100644 index 0000000000..1aa1e7b3c7 --- /dev/null +++ b/ibm/service/drautomationservice/dra-go-sdk/README.md @@ -0,0 +1,103 @@ +[![Build Status](https://v3.travis-ci.com/DRAutomation/dra-go-sdk.svg?token=Z799xXryYYPor3yyJxEs&branch=main)](https://v3.travis.ibm.com/DRAutomation/dra-go-sdk) +[![semantic-release](https://img.shields.io/badge/%20%20%F0%9F%93%A6%F0%9F%9A%80-semantic--release-e10079.svg)](https://github.com/semantic-release/semantic-release) + +# IBM Cloud DrAutomation Go SDK 0.0.1 +Go client library to interact with the various [IBM Cloud DrAutomation services APIs](https://cloud.ibm.com/docs/dr-automation-powervs). + +Disclaimer: this SDK is being released initially as a **pre-release** version. +Changes might occur which impact applications that use this SDK. + +## Table of Contents + + + + +- [Overview](#overview) +- [Prerequisites](#prerequisites) +- [Installation](#installation) + * [Go modules](#go-modules) + * [`go get` command](#go-get-command) +- [Using the SDK](#using-the-sdk) +- [Questions](#questions) +- [Issues](#issues) +- [Open source @ IBM](#open-source--ibm) +- [Contributing](#contributing) +- [License](#license) + + + +## Overview + +The IBM Cloud DrAutomation services Go SDK allows developers to programmatically interact with the following IBM Cloud services: + +Service Name | Package name +--- | --- +[DrAutomation Service](https://test.cloud.ibm.com/apidocs/dr-automation-powervs) | drautomationservicev1 + +## Prerequisites + +[ibm-cloud-onboarding]: https://cloud.ibm.com/registration + +* An [IBM Cloud][ibm-cloud-onboarding] account. +* An IAM API key to allow the SDK to access your account. Create one [here](https://cloud.ibm.com/iam/apikeys). +* Go version 1.23 or above. + +## Installation +The current version of this SDK: 0.0.1 + +### Go modules +If your application uses Go modules for dependency management (recommended), just add an import for each service +that you will use in your application. +Here is an example: + +```go +import ( + "github.ibm.com/DRAutomation/dra-go-sdk/drautomationservicev1" +) +``` +Next, run `go build` or `go mod tidy` to download and install the new dependencies and update your application's +`go.mod` file. + +In the example above, the `drautomationservicev1` part of the import path is the package name +associated with the Example Service service. +See the service table above to find the approprate package name for the services used by your application. + +### `go get` command +Alternatively, you can use the `go get` command to download and install the appropriate packages needed by your application: +``` +go get -u github.ibm.com/DRAutomation/dra-go-sdk/drautomationservicev1 +``` +Be sure to use the appropriate package name from the service table above for the services used by your application. + +## Using the SDK +For general SDK usage information, please see [this link](https://github.com/IBM/ibm-cloud-sdk-common/blob/main/README.md) + +## Questions + +If you are having difficulties using this SDK or have a question about the IBM Cloud services, +please ask a question at +[Stack Overflow](http://stackoverflow.com/questions/ask?tags=ibm-cloud). + +## Issues +If you encounter an issue with the project, you are welcome to submit a +[bug report](https://github.ibm.com/DRAutomation/dra-go-sdk/issues). +Before that, please search for similar issues. It's possible that someone has already reported the problem. + +## Open source @ IBM +Find more open source projects on the [IBM Github Page](http://ibm.github.io/) + +## Contributing +See [CONTRIBUTING](CONTRIBUTING.md). + +## License + +This SDK project is released under the Apache 2.0 license. +The license's full text can be found in [LICENSE](LICENSE). diff --git a/ibm/service/drautomationservice/dra-go-sdk/common/headers.go b/ibm/service/drautomationservice/dra-go-sdk/common/headers.go new file mode 100644 index 0000000000..6585b2cbfd --- /dev/null +++ b/ibm/service/drautomationservice/dra-go-sdk/common/headers.go @@ -0,0 +1,89 @@ +/** + * (C) Copyright IBM Corp. 2019, 2020. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package common + +import ( + "fmt" + "runtime" + + "github.com/IBM/go-sdk-core/v5/core" +) + +const ( + sdkName = "demo-go-sdk" + headerNameUserAgent = "User-Agent" +) + +// GetSdkHeaders - returns the set of SDK-specific headers to be included in an outgoing request. +// +// This function is invoked by generated service methods (i.e. methods which implement the REST API operations +// defined within the API definition). The purpose of this function is to give the SDK implementor the opportunity +// to provide SDK-specific HTTP headers that will be sent with an outgoing REST API request. +// This function is invoked for each invocation of a generated service method, +// so the set of HTTP headers could be request-specific. +// As an optimization, if your SDK will be returning the same set of HTTP headers for each invocation of this +// function, it is recommended that you initialize the returned map just once (perhaps by using +// lazy initialization) and simply return it each time the function is invoked, instead of building it each time +// as in the example below. +// +// If you plan to gather metrics for your SDK, the User-Agent header value must +// be a string similar to the following: +// demo-go-sdk/0.0.1 (lang=go; arch=x86_64; os=Linux; go.version=1.12.9) +// +// In the example above, the analytics tool will parse the user-agent header and +// use the following properties: +// "demo-go-sdk" - the name of your sdk +// "0.0.1"- the version of your sdk +// "lang=go" - the language of the current sdk +// "arch=x86_64; os=Linux; go.version=1.12.9" - system information +// +// Note: It is very important that the sdk name ends with the string `-sdk`, +// as the analytics data collector uses this to gather usage data. +// +// Parameters: +// +// serviceName - the name of the service as defined in the API definition (e.g. "MyService1") +// serviceVersion - the version of the service as defined in the API definition (e.g. "V1") +// operationId - the operationId as defined in the API definition (e.g. getContext) +// +// Returns: +// +// a Map which contains the set of headers to be included in the REST API request +func GetSdkHeaders(serviceName string, serviceVersion string, operationId string) map[string]string { + sdkHeaders := make(map[string]string) + + sdkHeaders[headerNameUserAgent] = GetUserAgentInfo() + + return sdkHeaders +} + +var userAgent string = fmt.Sprintf("%s/%s %s", sdkName, Version, GetSystemInfo()) + +func GetUserAgentInfo() string { + return userAgent +} + +var systemInfo = fmt.Sprintf("(lang=go; arch=%s; os=%s; go.version=%s)", runtime.GOARCH, runtime.GOOS, runtime.Version()) + +func GetSystemInfo() string { + return systemInfo +} + +func GetComponentInfo() *core.ProblemComponent { + // This should match the module name in go.mod. + return core.NewProblemComponent("github.ibm.com/DRAutomation/dra-go-sdk", Version) +} diff --git a/ibm/service/drautomationservice/dra-go-sdk/common/headers_test.go b/ibm/service/drautomationservice/dra-go-sdk/common/headers_test.go new file mode 100644 index 0000000000..83cad02b3b --- /dev/null +++ b/ibm/service/drautomationservice/dra-go-sdk/common/headers_test.go @@ -0,0 +1,43 @@ +/** + * (C) Copyright IBM Corp. 2019, 2020. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package common + +import ( + "github.com/stretchr/testify/assert" + "strings" + "testing" +) + +func TestGetSystemInfo(t *testing.T) { + var sysinfo = GetSystemInfo() + assert.NotNil(t, sysinfo) + assert.True(t, strings.Contains(sysinfo, "lang=")) + assert.True(t, strings.Contains(sysinfo, "arch=")) + assert.True(t, strings.Contains(sysinfo, "os=")) + assert.True(t, strings.Contains(sysinfo, "go.version=")) +} + +func TestGetSdkHeaders(t *testing.T) { + var headers = GetSdkHeaders("myService", "v123", "myOperation") + assert.NotNil(t, headers) + + var foundIt bool + + _, foundIt = headers[headerNameUserAgent] + assert.True(t, foundIt) + t.Logf("user agent: %s\n", headers[headerNameUserAgent]) +} diff --git a/ibm/service/drautomationservice/dra-go-sdk/common/version.go b/ibm/service/drautomationservice/dra-go-sdk/common/version.go new file mode 100644 index 0000000000..878f3262f1 --- /dev/null +++ b/ibm/service/drautomationservice/dra-go-sdk/common/version.go @@ -0,0 +1,20 @@ +/** + * (C) Copyright IBM Corp. 2019, 2020. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package common + +// Version of the SDK +const Version = "0.0.1" diff --git a/ibm/service/drautomationservice/dra-go-sdk/drautomationservicev1/dr_automation_service_provision_deprovision_examples_test.go b/ibm/service/drautomationservice/dra-go-sdk/drautomationservicev1/dr_automation_service_provision_deprovision_examples_test.go new file mode 100644 index 0000000000..3825146922 --- /dev/null +++ b/ibm/service/drautomationservice/dra-go-sdk/drautomationservicev1/dr_automation_service_provision_deprovision_examples_test.go @@ -0,0 +1,143 @@ +//go:build customexamples +// +build customexamples + +package drautomationservicev1_test + +import ( + "encoding/json" + "fmt" + "log" + "time" + + "github.com/IBM/go-sdk-core/v5/core" + "github.com/IBM/platform-services-go-sdk/globalcatalogv1" + "github.com/IBM/platform-services-go-sdk/resourcecontrollerv2" + . "github.com/onsi/ginkgo" + . "github.com/onsi/gomega" +) + +var _ = Describe(`ResourceControllerV2 Examples Tests`, func() { + + var ( + resourceControllerService *resourcecontrollerv2.ResourceControllerV2 + + // Configurable values + resourceGroup string = "9d445dfd58484a489220751d0077f906" // Replace with your resource group ID + serviceName string = "power-dr-automation" // Catalog service name + planName string = "power-virtual-server-dr-automation" // Plan name under the service + resourceInstanceName string = "mympsdktest" // Desired instance name + targetRegion string = "global" // Desired region + iamAPIKey string = "" // Replace with your IBM Cloud API key + ) + + Describe(`Client initialization`, func() { + It("Successfully construct the service client instance", func() { + options := &resourcecontrollerv2.ResourceControllerV2Options{ + Authenticator: &core.IamAuthenticator{ + ApiKey: iamAPIKey, + }, + } + + var err error + resourceControllerService, err = resourcecontrollerv2.NewResourceControllerV2(options) + Expect(err).To(BeNil()) + Expect(resourceControllerService).ToNot(BeNil()) + }) + }) + + Describe(`ResourceControllerV2 request examples`, func() { + + It(`CreateResourceInstance with dynamic plan ID`, func() { + fmt.Println("\nFetching plan ID...") + + // Step 1: Use global catalog to fetch plan ID + catalogClient, err := globalcatalogv1.NewGlobalCatalogV1( + &globalcatalogv1.GlobalCatalogV1Options{ + Authenticator: &core.IamAuthenticator{ApiKey: iamAPIKey}, + }, + ) + Expect(err).To(BeNil()) + + listOpts := catalogClient.NewListCatalogEntriesOptions() + listOpts.SetQ(fmt.Sprintf("name:%s", serviceName)) + listOpts.SetAccount("global") + listOpts.SetComplete(true) + + searchResult, _, err := catalogClient.ListCatalogEntries(listOpts) + Expect(err).To(BeNil()) + Expect(len(searchResult.Resources)).To(BeNumerically(">", 0)) + + serviceEntryID := *searchResult.Resources[0].ID + + getChildOpts := catalogClient.NewGetChildObjectsOptions(serviceEntryID, "*") + getChildOpts.SetComplete(true) + + childResult, _, err := catalogClient.GetChildObjects(getChildOpts) + Expect(err).To(BeNil()) + + var resourcePlanID string + for _, child := range childResult.Resources { + if child.Name != nil && *child.Name == planName { + resourcePlanID = *child.ID + break + } + } + + if resourcePlanID == "" { + log.Fatalf("Plan '%s' not found under service '%s'", planName, serviceName) + } + fmt.Printf("Found Plan ID: %s\n", resourcePlanID) + + // Step 2: Create resource instance + fmt.Println("\nCreateResourceInstance() result:") + createOpts := resourceControllerService.NewCreateResourceInstanceOptions( + resourceInstanceName, + targetRegion, + resourceGroup, + resourcePlanID, + ) + + resourceInstance, response, err := resourceControllerService.CreateResourceInstance(createOpts) + Expect(err).To(BeNil()) + Expect(response.StatusCode).To(Equal(201)) + Expect(resourceInstance).ToNot(BeNil()) + + b, _ := json.MarshalIndent(resourceInstance, "", " ") + fmt.Println(string(b)) + + // Step 3: Fetch details of the created instance + instanceGUID := *resourceInstance.GUID + getOpts := resourceControllerService.NewGetResourceInstanceOptions(instanceGUID) + + instanceDetails, response, err := resourceControllerService.GetResourceInstance(getOpts) + Expect(err).To(BeNil()) + Expect(response.StatusCode).To(Equal(200)) + Expect(instanceDetails).ToNot(BeNil()) + + fmt.Println("\nGetResourceInstance() result:") + b, _ = json.MarshalIndent(instanceDetails, "", " ") + fmt.Println(string(b)) + }) + It(`DeleteResourceInstance request example`, func() { + // begin-delete_resource_instance + instanceGUID := "crn:v1:bluemix:public:power-dr-automation:global:a/094f4214c75941f991da601b001df1fe:fc61d5cd-a583-431c-aaf6-261bbd99cbd9::" + deleteResourceInstanceOptions := resourceControllerService.NewDeleteResourceInstanceOptions( + instanceGUID, + ) + deleteResourceInstanceOptions.SetRecursive(false) + + response, err := resourceControllerService.DeleteResourceInstance(deleteResourceInstanceOptions) + if err != nil { + panic(err) + } + + // end-delete_resource_instance + fmt.Printf("\nDeleteResourceInstance() response status code: %d\n", response.StatusCode) + + time.Sleep(20 * time.Second) + + Expect(err).To(BeNil()) + Expect(response.StatusCode).To(Equal(202)) + }) + }) +}) diff --git a/ibm/service/drautomationservice/dra-go-sdk/drautomationservicev1/dr_automation_service_v1.go b/ibm/service/drautomationservice/dra-go-sdk/drautomationservicev1/dr_automation_service_v1.go new file mode 100644 index 0000000000..153d4b4c0c --- /dev/null +++ b/ibm/service/drautomationservice/dra-go-sdk/drautomationservicev1/dr_automation_service_v1.go @@ -0,0 +1,3448 @@ +/** + * (C) Copyright IBM Corp. 2025. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * IBM OpenAPI SDK Code Generator Version: 3.105.0-3c13b041-20250605-193116 + */ + +// Package drautomationservicev1 : Operations and models for the DrAutomationServiceV1 service +package drautomationservicev1 + +import ( + "context" + "encoding/json" + "fmt" + "net/http" + "reflect" + "time" + + "github.com/IBM/go-sdk-core/v5/core" + "github.com/go-openapi/strfmt" + common "github.ibm.com/DRAutomation/dra-go-sdk/common" +) + +// DrAutomationServiceV1 : No description provided (generated by Openapi Generator +// https://github.com/openapitools/openapi-generator) +// +// API Version: 1.0.0 +type DrAutomationServiceV1 struct { + Service *core.BaseService +} + +// DefaultServiceURL is the default URL to make service requests to. +const DefaultServiceURL = "https://powerdra-test.1lcv1smi8d9z.us-south.codeengine.appdomain.cloud" + +// DefaultServiceName is the default key used to find external configuration information. +const DefaultServiceName = "dr_automation_service" + +// DrAutomationServiceV1Options : Service options +type DrAutomationServiceV1Options struct { + ServiceName string + URL string + Authenticator core.Authenticator +} + +// NewDrAutomationServiceV1UsingExternalConfig : constructs an instance of DrAutomationServiceV1 with passed in options and external configuration. +func NewDrAutomationServiceV1UsingExternalConfig(options *DrAutomationServiceV1Options) (drAutomationService *DrAutomationServiceV1, err error) { + if options.ServiceName == "" { + options.ServiceName = DefaultServiceName + } + + if options.Authenticator == nil { + options.Authenticator, err = core.GetAuthenticatorFromEnvironment(options.ServiceName) + if err != nil { + err = core.SDKErrorf(err, "", "env-auth-error", common.GetComponentInfo()) + return + } + } + + drAutomationService, err = NewDrAutomationServiceV1(options) + err = core.RepurposeSDKProblem(err, "new-client-error") + if err != nil { + return + } + + err = drAutomationService.Service.ConfigureService(options.ServiceName) + if err != nil { + err = core.SDKErrorf(err, "", "client-config-error", common.GetComponentInfo()) + return + } + + if options.URL != "" { + err = drAutomationService.Service.SetServiceURL(options.URL) + err = core.RepurposeSDKProblem(err, "url-set-error") + } + return +} + +// NewDrAutomationServiceV1 : constructs an instance of DrAutomationServiceV1 with passed in options. +func NewDrAutomationServiceV1(options *DrAutomationServiceV1Options) (service *DrAutomationServiceV1, err error) { + serviceOptions := &core.ServiceOptions{ + URL: DefaultServiceURL, + Authenticator: options.Authenticator, + } + + baseService, err := core.NewBaseService(serviceOptions) + if err != nil { + err = core.SDKErrorf(err, "", "new-base-error", common.GetComponentInfo()) + return + } + + if options.URL != "" { + err = baseService.SetServiceURL(options.URL) + if err != nil { + err = core.SDKErrorf(err, "", "set-url-error", common.GetComponentInfo()) + return + } + } + + service = &DrAutomationServiceV1{ + Service: baseService, + } + + return +} + +// GetServiceURLForRegion returns the service URL to be used for the specified region +func GetServiceURLForRegion(region string) (string, error) { + return "", core.SDKErrorf(nil, "service does not support regional URLs", "no-regional-support", common.GetComponentInfo()) +} + +// Clone makes a copy of "drAutomationService" suitable for processing requests. +func (drAutomationService *DrAutomationServiceV1) Clone() *DrAutomationServiceV1 { + if core.IsNil(drAutomationService) { + return nil + } + clone := *drAutomationService + clone.Service = drAutomationService.Service.Clone() + return &clone +} + +// SetServiceURL sets the service URL +func (drAutomationService *DrAutomationServiceV1) SetServiceURL(url string) error { + err := drAutomationService.Service.SetServiceURL(url) + if err != nil { + err = core.SDKErrorf(err, "", "url-set-error", common.GetComponentInfo()) + } + return err +} + +// GetServiceURL returns the service URL +func (drAutomationService *DrAutomationServiceV1) GetServiceURL() string { + return drAutomationService.Service.GetServiceURL() +} + +// SetDefaultHeaders sets HTTP headers to be sent in every request +func (drAutomationService *DrAutomationServiceV1) SetDefaultHeaders(headers http.Header) { + drAutomationService.Service.SetDefaultHeaders(headers) +} + +// SetEnableGzipCompression sets the service's EnableGzipCompression field +func (drAutomationService *DrAutomationServiceV1) SetEnableGzipCompression(enableGzip bool) { + drAutomationService.Service.SetEnableGzipCompression(enableGzip) +} + +// GetEnableGzipCompression returns the service's EnableGzipCompression field +func (drAutomationService *DrAutomationServiceV1) GetEnableGzipCompression() bool { + return drAutomationService.Service.GetEnableGzipCompression() +} + +// EnableRetries enables automatic retries for requests invoked for this service instance. +// If either parameter is specified as 0, then a default value is used instead. +func (drAutomationService *DrAutomationServiceV1) EnableRetries(maxRetries int, maxRetryInterval time.Duration) { + drAutomationService.Service.EnableRetries(maxRetries, maxRetryInterval) +} + +// DisableRetries disables automatic retries for requests invoked for this service instance. +func (drAutomationService *DrAutomationServiceV1) DisableRetries() { + drAutomationService.Service.DisableRetries() +} + +// GetApikey : Validates whether current apikey is valid or not +// Retrieves the current API key details for the specified service instance. +func (drAutomationService *DrAutomationServiceV1) GetApikey(getApikeyOptions *GetApikeyOptions) (result *ValidationKeyResponse, response *core.DetailedResponse, err error) { + result, response, err = drAutomationService.GetApikeyWithContext(context.Background(), getApikeyOptions) + err = core.RepurposeSDKProblem(err, "") + return +} + +// GetApikeyWithContext is an alternate form of the GetApikey method which supports a Context parameter +func (drAutomationService *DrAutomationServiceV1) GetApikeyWithContext(ctx context.Context, getApikeyOptions *GetApikeyOptions) (result *ValidationKeyResponse, response *core.DetailedResponse, err error) { + err = core.ValidateNotNil(getApikeyOptions, "getApikeyOptions cannot be nil") + if err != nil { + err = core.SDKErrorf(err, "", "unexpected-nil-param", common.GetComponentInfo()) + return + } + err = core.ValidateStruct(getApikeyOptions, "getApikeyOptions") + if err != nil { + err = core.SDKErrorf(err, "", "struct-validation-error", common.GetComponentInfo()) + return + } + + pathParamsMap := map[string]string{ + "instance_id": *getApikeyOptions.InstanceID, + } + + builder := core.NewRequestBuilder(core.GET) + builder = builder.WithContext(ctx) + builder.EnableGzipCompression = drAutomationService.GetEnableGzipCompression() + _, err = builder.ResolveRequestURL(drAutomationService.Service.Options.URL, `/drautomation/v1/apikey/{instance_id}`, pathParamsMap) + if err != nil { + err = core.SDKErrorf(err, "", "url-resolve-error", common.GetComponentInfo()) + return + } + + for headerName, headerValue := range getApikeyOptions.Headers { + builder.AddHeader(headerName, headerValue) + } + + sdkHeaders := common.GetSdkHeaders("dr_automation_service", "V1", "GetApikey") + for headerName, headerValue := range sdkHeaders { + builder.AddHeader(headerName, headerValue) + } + builder.AddHeader("Accept", "application/json") + if getApikeyOptions.AcceptLanguage != nil { + builder.AddHeader("Accept-Language", fmt.Sprint(*getApikeyOptions.AcceptLanguage)) + } + if getApikeyOptions.IfNoneMatch != nil { + builder.AddHeader("If-None-Match", fmt.Sprint(*getApikeyOptions.IfNoneMatch)) + } + + request, err := builder.Build() + if err != nil { + err = core.SDKErrorf(err, "", "build-error", common.GetComponentInfo()) + return + } + + var rawResponse map[string]json.RawMessage + response, err = drAutomationService.Service.Request(request, &rawResponse) + if err != nil { + core.EnrichHTTPProblem(err, "get_apikey", getServiceComponentInfo()) + err = core.SDKErrorf(err, "", "http-request-err", common.GetComponentInfo()) + return + } + if rawResponse != nil { + err = core.UnmarshalModel(rawResponse, "", &result, UnmarshalValidationKeyResponse) + if err != nil { + err = core.SDKErrorf(err, "", "unmarshal-resp-error", common.GetComponentInfo()) + return + } + response.Result = result + } + + return +} + +// CreateApikey : validate key api +// Creating the API key details for the specified service instance. +func (drAutomationService *DrAutomationServiceV1) CreateApikey(createApikeyOptions *CreateApikeyOptions) (result *ValidationKeyResponse, response *core.DetailedResponse, err error) { + result, response, err = drAutomationService.CreateApikeyWithContext(context.Background(), createApikeyOptions) + err = core.RepurposeSDKProblem(err, "") + return +} + +// CreateApikeyWithContext is an alternate form of the CreateApikey method which supports a Context parameter +func (drAutomationService *DrAutomationServiceV1) CreateApikeyWithContext(ctx context.Context, createApikeyOptions *CreateApikeyOptions) (result *ValidationKeyResponse, response *core.DetailedResponse, err error) { + err = core.ValidateNotNil(createApikeyOptions, "createApikeyOptions cannot be nil") + if err != nil { + err = core.SDKErrorf(err, "", "unexpected-nil-param", common.GetComponentInfo()) + return + } + err = core.ValidateStruct(createApikeyOptions, "createApikeyOptions") + if err != nil { + err = core.SDKErrorf(err, "", "struct-validation-error", common.GetComponentInfo()) + return + } + + pathParamsMap := map[string]string{ + "instance_id": *createApikeyOptions.InstanceID, + } + + builder := core.NewRequestBuilder(core.POST) + builder = builder.WithContext(ctx) + builder.EnableGzipCompression = drAutomationService.GetEnableGzipCompression() + _, err = builder.ResolveRequestURL(drAutomationService.Service.Options.URL, `/drautomation/v1/apikey/{instance_id}`, pathParamsMap) + if err != nil { + err = core.SDKErrorf(err, "", "url-resolve-error", common.GetComponentInfo()) + return + } + + for headerName, headerValue := range createApikeyOptions.Headers { + builder.AddHeader(headerName, headerValue) + } + + sdkHeaders := common.GetSdkHeaders("dr_automation_service", "V1", "CreateApikey") + for headerName, headerValue := range sdkHeaders { + builder.AddHeader(headerName, headerValue) + } + builder.AddHeader("Accept", "application/json") + builder.AddHeader("Content-Type", "application/json") + if createApikeyOptions.AcceptLanguage != nil { + builder.AddHeader("Accept-Language", fmt.Sprint(*createApikeyOptions.AcceptLanguage)) + } + if createApikeyOptions.IfNoneMatch != nil { + builder.AddHeader("If-None-Match", fmt.Sprint(*createApikeyOptions.IfNoneMatch)) + } + + body := make(map[string]interface{}) + if createApikeyOptions.APIKey != nil { + body["api_key"] = createApikeyOptions.APIKey + } + _, err = builder.SetBodyContentJSON(body) + if err != nil { + err = core.SDKErrorf(err, "", "set-json-body-error", common.GetComponentInfo()) + return + } + + request, err := builder.Build() + if err != nil { + err = core.SDKErrorf(err, "", "build-error", common.GetComponentInfo()) + return + } + + var rawResponse map[string]json.RawMessage + response, err = drAutomationService.Service.Request(request, &rawResponse) + if err != nil { + core.EnrichHTTPProblem(err, "create_apikey", getServiceComponentInfo()) + err = core.SDKErrorf(err, "", "http-request-err", common.GetComponentInfo()) + return + } + if rawResponse != nil { + err = core.UnmarshalModel(rawResponse, "", &result, UnmarshalValidationKeyResponse) + if err != nil { + err = core.SDKErrorf(err, "", "unmarshal-resp-error", common.GetComponentInfo()) + return + } + response.Result = result + } + + return +} + +// UpdateApikey : Updates the API key for the specified service instance +// Updating the current API key details for the specified service instance. +func (drAutomationService *DrAutomationServiceV1) UpdateApikey(updateApikeyOptions *UpdateApikeyOptions) (result *ValidationKeyResponse, response *core.DetailedResponse, err error) { + result, response, err = drAutomationService.UpdateApikeyWithContext(context.Background(), updateApikeyOptions) + err = core.RepurposeSDKProblem(err, "") + return +} + +// UpdateApikeyWithContext is an alternate form of the UpdateApikey method which supports a Context parameter +func (drAutomationService *DrAutomationServiceV1) UpdateApikeyWithContext(ctx context.Context, updateApikeyOptions *UpdateApikeyOptions) (result *ValidationKeyResponse, response *core.DetailedResponse, err error) { + err = core.ValidateNotNil(updateApikeyOptions, "updateApikeyOptions cannot be nil") + if err != nil { + err = core.SDKErrorf(err, "", "unexpected-nil-param", common.GetComponentInfo()) + return + } + err = core.ValidateStruct(updateApikeyOptions, "updateApikeyOptions") + if err != nil { + err = core.SDKErrorf(err, "", "struct-validation-error", common.GetComponentInfo()) + return + } + + pathParamsMap := map[string]string{ + "instance_id": *updateApikeyOptions.InstanceID, + } + + builder := core.NewRequestBuilder(core.PUT) + builder = builder.WithContext(ctx) + builder.EnableGzipCompression = drAutomationService.GetEnableGzipCompression() + _, err = builder.ResolveRequestURL(drAutomationService.Service.Options.URL, `/drautomation/v1/apikey/{instance_id}`, pathParamsMap) + if err != nil { + err = core.SDKErrorf(err, "", "url-resolve-error", common.GetComponentInfo()) + return + } + + for headerName, headerValue := range updateApikeyOptions.Headers { + builder.AddHeader(headerName, headerValue) + } + + sdkHeaders := common.GetSdkHeaders("dr_automation_service", "V1", "UpdateApikey") + for headerName, headerValue := range sdkHeaders { + builder.AddHeader(headerName, headerValue) + } + builder.AddHeader("Accept", "application/json") + builder.AddHeader("Content-Type", "application/json") + if updateApikeyOptions.AcceptLanguage != nil { + builder.AddHeader("Accept-Language", fmt.Sprint(*updateApikeyOptions.AcceptLanguage)) + } + if updateApikeyOptions.IfNoneMatch != nil { + builder.AddHeader("If-None-Match", fmt.Sprint(*updateApikeyOptions.IfNoneMatch)) + } + + body := make(map[string]interface{}) + if updateApikeyOptions.APIKey != nil { + body["api_key"] = updateApikeyOptions.APIKey + } + _, err = builder.SetBodyContentJSON(body) + if err != nil { + err = core.SDKErrorf(err, "", "set-json-body-error", common.GetComponentInfo()) + return + } + + request, err := builder.Build() + if err != nil { + err = core.SDKErrorf(err, "", "build-error", common.GetComponentInfo()) + return + } + + var rawResponse map[string]json.RawMessage + response, err = drAutomationService.Service.Request(request, &rawResponse) + if err != nil { + core.EnrichHTTPProblem(err, "update_apikey", getServiceComponentInfo()) + err = core.SDKErrorf(err, "", "http-request-err", common.GetComponentInfo()) + return + } + if rawResponse != nil { + err = core.UnmarshalModel(rawResponse, "", &result, UnmarshalValidationKeyResponse) + if err != nil { + err = core.SDKErrorf(err, "", "unmarshal-resp-error", common.GetComponentInfo()) + return + } + response.Result = result + } + + return +} + +// GetDrGrsLocationPair : Get GRS location pairs based on managed vms +// Retrieves the (GRS) location pairs associated with the specified service instance based on managed VMs. +func (drAutomationService *DrAutomationServiceV1) GetDrGrsLocationPair(getDrGrsLocationPairOptions *GetDrGrsLocationPairOptions) (result *GetGrsLocationPairResponse, response *core.DetailedResponse, err error) { + result, response, err = drAutomationService.GetDrGrsLocationPairWithContext(context.Background(), getDrGrsLocationPairOptions) + err = core.RepurposeSDKProblem(err, "") + return +} + +// GetDrGrsLocationPairWithContext is an alternate form of the GetDrGrsLocationPair method which supports a Context parameter +func (drAutomationService *DrAutomationServiceV1) GetDrGrsLocationPairWithContext(ctx context.Context, getDrGrsLocationPairOptions *GetDrGrsLocationPairOptions) (result *GetGrsLocationPairResponse, response *core.DetailedResponse, err error) { + err = core.ValidateNotNil(getDrGrsLocationPairOptions, "getDrGrsLocationPairOptions cannot be nil") + if err != nil { + err = core.SDKErrorf(err, "", "unexpected-nil-param", common.GetComponentInfo()) + return + } + err = core.ValidateStruct(getDrGrsLocationPairOptions, "getDrGrsLocationPairOptions") + if err != nil { + err = core.SDKErrorf(err, "", "struct-validation-error", common.GetComponentInfo()) + return + } + + pathParamsMap := map[string]string{ + "instance_id": *getDrGrsLocationPairOptions.InstanceID, + } + + builder := core.NewRequestBuilder(core.GET) + builder = builder.WithContext(ctx) + builder.EnableGzipCompression = drAutomationService.GetEnableGzipCompression() + _, err = builder.ResolveRequestURL(drAutomationService.Service.Options.URL, `/drautomation/v1/dr_grs_location_pairs/{instance_id}`, pathParamsMap) + if err != nil { + err = core.SDKErrorf(err, "", "url-resolve-error", common.GetComponentInfo()) + return + } + + for headerName, headerValue := range getDrGrsLocationPairOptions.Headers { + builder.AddHeader(headerName, headerValue) + } + + sdkHeaders := common.GetSdkHeaders("dr_automation_service", "V1", "GetDrGrsLocationPair") + for headerName, headerValue := range sdkHeaders { + builder.AddHeader(headerName, headerValue) + } + builder.AddHeader("Accept", "application/json") + if getDrGrsLocationPairOptions.AcceptLanguage != nil { + builder.AddHeader("Accept-Language", fmt.Sprint(*getDrGrsLocationPairOptions.AcceptLanguage)) + } + if getDrGrsLocationPairOptions.IfNoneMatch != nil { + builder.AddHeader("If-None-Match", fmt.Sprint(*getDrGrsLocationPairOptions.IfNoneMatch)) + } + + request, err := builder.Build() + if err != nil { + err = core.SDKErrorf(err, "", "build-error", common.GetComponentInfo()) + return + } + + var rawResponse map[string]json.RawMessage + response, err = drAutomationService.Service.Request(request, &rawResponse) + if err != nil { + core.EnrichHTTPProblem(err, "get_dr_grs_location_pair", getServiceComponentInfo()) + err = core.SDKErrorf(err, "", "http-request-err", common.GetComponentInfo()) + return + } + if rawResponse != nil { + err = core.UnmarshalModel(rawResponse, "", &result, UnmarshalGetGrsLocationPairResponse) + if err != nil { + err = core.SDKErrorf(err, "", "unmarshal-resp-error", common.GetComponentInfo()) + return + } + response.Result = result + } + + return +} + +// GetDrLocations : Get Disaster recovery locations +// Retrieves the list of disaster recovery (DR) locations available for the specified service instance. +func (drAutomationService *DrAutomationServiceV1) GetDrLocations(getDrLocationsOptions *GetDrLocationsOptions) (result *GetDrLocationsResponse, response *core.DetailedResponse, err error) { + result, response, err = drAutomationService.GetDrLocationsWithContext(context.Background(), getDrLocationsOptions) + err = core.RepurposeSDKProblem(err, "") + return +} + +// GetDrLocationsWithContext is an alternate form of the GetDrLocations method which supports a Context parameter +func (drAutomationService *DrAutomationServiceV1) GetDrLocationsWithContext(ctx context.Context, getDrLocationsOptions *GetDrLocationsOptions) (result *GetDrLocationsResponse, response *core.DetailedResponse, err error) { + err = core.ValidateNotNil(getDrLocationsOptions, "getDrLocationsOptions cannot be nil") + if err != nil { + err = core.SDKErrorf(err, "", "unexpected-nil-param", common.GetComponentInfo()) + return + } + err = core.ValidateStruct(getDrLocationsOptions, "getDrLocationsOptions") + if err != nil { + err = core.SDKErrorf(err, "", "struct-validation-error", common.GetComponentInfo()) + return + } + + pathParamsMap := map[string]string{ + "instance_id": *getDrLocationsOptions.InstanceID, + } + + builder := core.NewRequestBuilder(core.GET) + builder = builder.WithContext(ctx) + builder.EnableGzipCompression = drAutomationService.GetEnableGzipCompression() + _, err = builder.ResolveRequestURL(drAutomationService.Service.Options.URL, `/drautomation/v1/dr_locations/{instance_id}`, pathParamsMap) + if err != nil { + err = core.SDKErrorf(err, "", "url-resolve-error", common.GetComponentInfo()) + return + } + + for headerName, headerValue := range getDrLocationsOptions.Headers { + builder.AddHeader(headerName, headerValue) + } + + sdkHeaders := common.GetSdkHeaders("dr_automation_service", "V1", "GetDrLocations") + for headerName, headerValue := range sdkHeaders { + builder.AddHeader(headerName, headerValue) + } + builder.AddHeader("Accept", "application/json") + if getDrLocationsOptions.AcceptLanguage != nil { + builder.AddHeader("Accept-Language", fmt.Sprint(*getDrLocationsOptions.AcceptLanguage)) + } + if getDrLocationsOptions.IfNoneMatch != nil { + builder.AddHeader("If-None-Match", fmt.Sprint(*getDrLocationsOptions.IfNoneMatch)) + } + + request, err := builder.Build() + if err != nil { + err = core.SDKErrorf(err, "", "build-error", common.GetComponentInfo()) + return + } + + var rawResponse map[string]json.RawMessage + response, err = drAutomationService.Service.Request(request, &rawResponse) + if err != nil { + core.EnrichHTTPProblem(err, "get_dr_locations", getServiceComponentInfo()) + err = core.SDKErrorf(err, "", "http-request-err", common.GetComponentInfo()) + return + } + if rawResponse != nil { + err = core.UnmarshalModel(rawResponse, "", &result, UnmarshalGetDrLocationsResponse) + if err != nil { + err = core.SDKErrorf(err, "", "unmarshal-resp-error", common.GetComponentInfo()) + return + } + response.Result = result + } + + return +} + +// GetDrManagedVM : Get managed vms for the instance +// Retrieves the list of disaster recovery (DR) managed virtual machines for the specified service instance. +func (drAutomationService *DrAutomationServiceV1) GetDrManagedVM(getDrManagedVMOptions *GetDrManagedVMOptions) (result *ManagedVMMapResponse, response *core.DetailedResponse, err error) { + result, response, err = drAutomationService.GetDrManagedVMWithContext(context.Background(), getDrManagedVMOptions) + err = core.RepurposeSDKProblem(err, "") + return +} + +// GetDrManagedVMWithContext is an alternate form of the GetDrManagedVM method which supports a Context parameter +func (drAutomationService *DrAutomationServiceV1) GetDrManagedVMWithContext(ctx context.Context, getDrManagedVMOptions *GetDrManagedVMOptions) (result *ManagedVMMapResponse, response *core.DetailedResponse, err error) { + err = core.ValidateNotNil(getDrManagedVMOptions, "getDrManagedVMOptions cannot be nil") + if err != nil { + err = core.SDKErrorf(err, "", "unexpected-nil-param", common.GetComponentInfo()) + return + } + err = core.ValidateStruct(getDrManagedVMOptions, "getDrManagedVMOptions") + if err != nil { + err = core.SDKErrorf(err, "", "struct-validation-error", common.GetComponentInfo()) + return + } + + pathParamsMap := map[string]string{ + "instance_id": *getDrManagedVMOptions.InstanceID, + } + + builder := core.NewRequestBuilder(core.GET) + builder = builder.WithContext(ctx) + builder.EnableGzipCompression = drAutomationService.GetEnableGzipCompression() + _, err = builder.ResolveRequestURL(drAutomationService.Service.Options.URL, `/drautomation/v1/dr_managed_vms/{instance_id}`, pathParamsMap) + if err != nil { + err = core.SDKErrorf(err, "", "url-resolve-error", common.GetComponentInfo()) + return + } + + for headerName, headerValue := range getDrManagedVMOptions.Headers { + builder.AddHeader(headerName, headerValue) + } + + sdkHeaders := common.GetSdkHeaders("dr_automation_service", "V1", "GetDrManagedVM") + for headerName, headerValue := range sdkHeaders { + builder.AddHeader(headerName, headerValue) + } + builder.AddHeader("Accept", "application/json") + if getDrManagedVMOptions.AcceptLanguage != nil { + builder.AddHeader("Accept-Language", fmt.Sprint(*getDrManagedVMOptions.AcceptLanguage)) + } + if getDrManagedVMOptions.IfNoneMatch != nil { + builder.AddHeader("If-None-Match", fmt.Sprint(*getDrManagedVMOptions.IfNoneMatch)) + } + + request, err := builder.Build() + if err != nil { + err = core.SDKErrorf(err, "", "build-error", common.GetComponentInfo()) + return + } + + var rawResponse map[string]json.RawMessage + response, err = drAutomationService.Service.Request(request, &rawResponse) + if err != nil { + core.EnrichHTTPProblem(err, "get_dr_managed_vm", getServiceComponentInfo()) + err = core.SDKErrorf(err, "", "http-request-err", common.GetComponentInfo()) + return + } + if rawResponse != nil { + err = core.UnmarshalModel(rawResponse, "", &result, UnmarshalManagedVMMapResponse) + if err != nil { + err = core.SDKErrorf(err, "", "unmarshal-resp-error", common.GetComponentInfo()) + return + } + response.Result = result + } + + return +} + +// GetDrSummary : Disaster recovery deployment details +// Retrieves the disaster recovery (DR) summary details for the specified service instance, including key configuration, +// status information and managed vm details. +func (drAutomationService *DrAutomationServiceV1) GetDrSummary(getDrSummaryOptions *GetDrSummaryOptions) (result *DrAutomationGetSummaryResponse, response *core.DetailedResponse, err error) { + result, response, err = drAutomationService.GetDrSummaryWithContext(context.Background(), getDrSummaryOptions) + err = core.RepurposeSDKProblem(err, "") + return +} + +// GetDrSummaryWithContext is an alternate form of the GetDrSummary method which supports a Context parameter +func (drAutomationService *DrAutomationServiceV1) GetDrSummaryWithContext(ctx context.Context, getDrSummaryOptions *GetDrSummaryOptions) (result *DrAutomationGetSummaryResponse, response *core.DetailedResponse, err error) { + err = core.ValidateNotNil(getDrSummaryOptions, "getDrSummaryOptions cannot be nil") + if err != nil { + err = core.SDKErrorf(err, "", "unexpected-nil-param", common.GetComponentInfo()) + return + } + err = core.ValidateStruct(getDrSummaryOptions, "getDrSummaryOptions") + if err != nil { + err = core.SDKErrorf(err, "", "struct-validation-error", common.GetComponentInfo()) + return + } + + pathParamsMap := map[string]string{ + "instance_id": *getDrSummaryOptions.InstanceID, + } + + builder := core.NewRequestBuilder(core.GET) + builder = builder.WithContext(ctx) + builder.EnableGzipCompression = drAutomationService.GetEnableGzipCompression() + _, err = builder.ResolveRequestURL(drAutomationService.Service.Options.URL, `/drautomation/v1/dr_summary/{instance_id}`, pathParamsMap) + if err != nil { + err = core.SDKErrorf(err, "", "url-resolve-error", common.GetComponentInfo()) + return + } + + for headerName, headerValue := range getDrSummaryOptions.Headers { + builder.AddHeader(headerName, headerValue) + } + + sdkHeaders := common.GetSdkHeaders("dr_automation_service", "V1", "GetDrSummary") + for headerName, headerValue := range sdkHeaders { + builder.AddHeader(headerName, headerValue) + } + builder.AddHeader("Accept", "application/json") + if getDrSummaryOptions.AcceptLanguage != nil { + builder.AddHeader("Accept-Language", fmt.Sprint(*getDrSummaryOptions.AcceptLanguage)) + } + if getDrSummaryOptions.IfNoneMatch != nil { + builder.AddHeader("If-None-Match", fmt.Sprint(*getDrSummaryOptions.IfNoneMatch)) + } + + request, err := builder.Build() + if err != nil { + err = core.SDKErrorf(err, "", "build-error", common.GetComponentInfo()) + return + } + + var rawResponse map[string]json.RawMessage + response, err = drAutomationService.Service.Request(request, &rawResponse) + if err != nil { + core.EnrichHTTPProblem(err, "get_dr_summary", getServiceComponentInfo()) + err = core.SDKErrorf(err, "", "http-request-err", common.GetComponentInfo()) + return + } + if rawResponse != nil { + err = core.UnmarshalModel(rawResponse, "", &result, UnmarshalDrAutomationGetSummaryResponse) + if err != nil { + err = core.SDKErrorf(err, "", "unmarshal-resp-error", common.GetComponentInfo()) + return + } + response.Result = result + } + + return +} + +// GetMachineType : Get MachineTypes based on selected workspaces +// Retrieves the list of supported machine types for the given workspace. This endpoint is used to identify machine +// types available for disaster recovery automation. +func (drAutomationService *DrAutomationServiceV1) GetMachineType(getMachineTypeOptions *GetMachineTypeOptions) (result *MachineTypesByWorkspace, response *core.DetailedResponse, err error) { + result, response, err = drAutomationService.GetMachineTypeWithContext(context.Background(), getMachineTypeOptions) + err = core.RepurposeSDKProblem(err, "") + return +} + +// GetMachineTypeWithContext is an alternate form of the GetMachineType method which supports a Context parameter +func (drAutomationService *DrAutomationServiceV1) GetMachineTypeWithContext(ctx context.Context, getMachineTypeOptions *GetMachineTypeOptions) (result *MachineTypesByWorkspace, response *core.DetailedResponse, err error) { + err = core.ValidateNotNil(getMachineTypeOptions, "getMachineTypeOptions cannot be nil") + if err != nil { + err = core.SDKErrorf(err, "", "unexpected-nil-param", common.GetComponentInfo()) + return + } + err = core.ValidateStruct(getMachineTypeOptions, "getMachineTypeOptions") + if err != nil { + err = core.SDKErrorf(err, "", "struct-validation-error", common.GetComponentInfo()) + return + } + + pathParamsMap := map[string]string{ + "instance_id": *getMachineTypeOptions.InstanceID, + } + + builder := core.NewRequestBuilder(core.GET) + builder = builder.WithContext(ctx) + builder.EnableGzipCompression = drAutomationService.GetEnableGzipCompression() + _, err = builder.ResolveRequestURL(drAutomationService.Service.Options.URL, `/drautomation/v1/machinetypes/{instance_id}`, pathParamsMap) + if err != nil { + err = core.SDKErrorf(err, "", "url-resolve-error", common.GetComponentInfo()) + return + } + + for headerName, headerValue := range getMachineTypeOptions.Headers { + builder.AddHeader(headerName, headerValue) + } + + sdkHeaders := common.GetSdkHeaders("dr_automation_service", "V1", "GetMachineType") + for headerName, headerValue := range sdkHeaders { + builder.AddHeader(headerName, headerValue) + } + builder.AddHeader("Accept", "application/json") + if getMachineTypeOptions.AcceptLanguage != nil { + builder.AddHeader("Accept-Language", fmt.Sprint(*getMachineTypeOptions.AcceptLanguage)) + } + if getMachineTypeOptions.IfNoneMatch != nil { + builder.AddHeader("If-None-Match", fmt.Sprint(*getMachineTypeOptions.IfNoneMatch)) + } + + builder.AddQuery("primary_workspace_name", fmt.Sprint(*getMachineTypeOptions.PrimaryWorkspaceName)) + if getMachineTypeOptions.StandbyWorkspaceName != nil { + builder.AddQuery("standby_workspace_name", fmt.Sprint(*getMachineTypeOptions.StandbyWorkspaceName)) + } + + request, err := builder.Build() + if err != nil { + err = core.SDKErrorf(err, "", "build-error", common.GetComponentInfo()) + return + } + + var rawResponse map[string]json.RawMessage + response, err = drAutomationService.Service.Request(request, &rawResponse) + if err != nil { + core.EnrichHTTPProblem(err, "get_machine_type", getServiceComponentInfo()) + err = core.SDKErrorf(err, "", "http-request-err", common.GetComponentInfo()) + return + } + if rawResponse != nil { + err = core.UnmarshalModel(rawResponse, "", &result, UnmarshalMachineTypesByWorkspace) + if err != nil { + err = core.SDKErrorf(err, "", "unmarshal-resp-error", common.GetComponentInfo()) + return + } + response.Result = result + } + + return +} + +// GetPowervsWorkspaces : List of primary and standby powervs workspaces +// Retrieves the power virtual server workspaces for primary and standby orchestrator based on location id. +func (drAutomationService *DrAutomationServiceV1) GetPowervsWorkspaces(getPowervsWorkspacesOptions *GetPowervsWorkspacesOptions) (result *DrData, response *core.DetailedResponse, err error) { + result, response, err = drAutomationService.GetPowervsWorkspacesWithContext(context.Background(), getPowervsWorkspacesOptions) + err = core.RepurposeSDKProblem(err, "") + return +} + +// GetPowervsWorkspacesWithContext is an alternate form of the GetPowervsWorkspaces method which supports a Context parameter +func (drAutomationService *DrAutomationServiceV1) GetPowervsWorkspacesWithContext(ctx context.Context, getPowervsWorkspacesOptions *GetPowervsWorkspacesOptions) (result *DrData, response *core.DetailedResponse, err error) { + err = core.ValidateNotNil(getPowervsWorkspacesOptions, "getPowervsWorkspacesOptions cannot be nil") + if err != nil { + err = core.SDKErrorf(err, "", "unexpected-nil-param", common.GetComponentInfo()) + return + } + err = core.ValidateStruct(getPowervsWorkspacesOptions, "getPowervsWorkspacesOptions") + if err != nil { + err = core.SDKErrorf(err, "", "struct-validation-error", common.GetComponentInfo()) + return + } + + pathParamsMap := map[string]string{ + "instance_id": *getPowervsWorkspacesOptions.InstanceID, + } + + builder := core.NewRequestBuilder(core.GET) + builder = builder.WithContext(ctx) + builder.EnableGzipCompression = drAutomationService.GetEnableGzipCompression() + _, err = builder.ResolveRequestURL(drAutomationService.Service.Options.URL, `/drautomation/v1/powervs_workspaces/{instance_id}`, pathParamsMap) + if err != nil { + err = core.SDKErrorf(err, "", "url-resolve-error", common.GetComponentInfo()) + return + } + + for headerName, headerValue := range getPowervsWorkspacesOptions.Headers { + builder.AddHeader(headerName, headerValue) + } + + sdkHeaders := common.GetSdkHeaders("dr_automation_service", "V1", "GetPowervsWorkspaces") + for headerName, headerValue := range sdkHeaders { + builder.AddHeader(headerName, headerValue) + } + builder.AddHeader("Accept", "application/json") + if getPowervsWorkspacesOptions.IfNoneMatch != nil { + builder.AddHeader("If-None-Match", fmt.Sprint(*getPowervsWorkspacesOptions.IfNoneMatch)) + } + + builder.AddQuery("location_id", fmt.Sprint(*getPowervsWorkspacesOptions.LocationID)) + + request, err := builder.Build() + if err != nil { + err = core.SDKErrorf(err, "", "build-error", common.GetComponentInfo()) + return + } + + var rawResponse map[string]json.RawMessage + response, err = drAutomationService.Service.Request(request, &rawResponse) + if err != nil { + core.EnrichHTTPProblem(err, "get_powervs_workspaces", getServiceComponentInfo()) + err = core.SDKErrorf(err, "", "http-request-err", common.GetComponentInfo()) + return + } + if rawResponse != nil { + err = core.UnmarshalModel(rawResponse, "", &result, UnmarshalDrData) + if err != nil { + err = core.SDKErrorf(err, "", "unmarshal-resp-error", common.GetComponentInfo()) + return + } + response.Result = result + } + + return +} + +// GetManageDr : View configured DR automation details +// Retrieves the (DR) management configuration and status for the specified service instance. +func (drAutomationService *DrAutomationServiceV1) GetManageDr(getManageDrOptions *GetManageDrOptions) (result *ServiceInstanceManageDr, response *core.DetailedResponse, err error) { + result, response, err = drAutomationService.GetManageDrWithContext(context.Background(), getManageDrOptions) + err = core.RepurposeSDKProblem(err, "") + return +} + +// GetManageDrWithContext is an alternate form of the GetManageDr method which supports a Context parameter +func (drAutomationService *DrAutomationServiceV1) GetManageDrWithContext(ctx context.Context, getManageDrOptions *GetManageDrOptions) (result *ServiceInstanceManageDr, response *core.DetailedResponse, err error) { + err = core.ValidateNotNil(getManageDrOptions, "getManageDrOptions cannot be nil") + if err != nil { + err = core.SDKErrorf(err, "", "unexpected-nil-param", common.GetComponentInfo()) + return + } + err = core.ValidateStruct(getManageDrOptions, "getManageDrOptions") + if err != nil { + err = core.SDKErrorf(err, "", "struct-validation-error", common.GetComponentInfo()) + return + } + + pathParamsMap := map[string]string{ + "instance_id": *getManageDrOptions.InstanceID, + } + + builder := core.NewRequestBuilder(core.GET) + builder = builder.WithContext(ctx) + builder.EnableGzipCompression = drAutomationService.GetEnableGzipCompression() + _, err = builder.ResolveRequestURL(drAutomationService.Service.Options.URL, `/drautomation/v1/manage_dr/{instance_id}`, pathParamsMap) + if err != nil { + err = core.SDKErrorf(err, "", "url-resolve-error", common.GetComponentInfo()) + return + } + + for headerName, headerValue := range getManageDrOptions.Headers { + builder.AddHeader(headerName, headerValue) + } + + sdkHeaders := common.GetSdkHeaders("dr_automation_service", "V1", "GetManageDr") + for headerName, headerValue := range sdkHeaders { + builder.AddHeader(headerName, headerValue) + } + builder.AddHeader("Accept", "application/json") + if getManageDrOptions.AcceptLanguage != nil { + builder.AddHeader("Accept-Language", fmt.Sprint(*getManageDrOptions.AcceptLanguage)) + } + if getManageDrOptions.IfNoneMatch != nil { + builder.AddHeader("If-None-Match", fmt.Sprint(*getManageDrOptions.IfNoneMatch)) + } + + request, err := builder.Build() + if err != nil { + err = core.SDKErrorf(err, "", "build-error", common.GetComponentInfo()) + return + } + + var rawResponse map[string]json.RawMessage + response, err = drAutomationService.Service.Request(request, &rawResponse) + if err != nil { + core.EnrichHTTPProblem(err, "get_manage_dr", getServiceComponentInfo()) + err = core.SDKErrorf(err, "", "http-request-err", common.GetComponentInfo()) + return + } + if rawResponse != nil { + err = core.UnmarshalModel(rawResponse, "", &result, UnmarshalServiceInstanceManageDr) + if err != nil { + err = core.SDKErrorf(err, "", "unmarshal-resp-error", common.GetComponentInfo()) + return + } + response.Result = result + } + + return +} + +// CreateManageDr : Create DR Deployment +// Creates Orchestrator VM in the given workspace and configuration. Orchestrator VM can be used to manage multiple +// virtual servers and help ensure continuous availability. For more details, refer Deploying the Orchestrator - +// https://cloud.ibm.com/docs/dr-automation-powervs?topic=dr-automation-powervs-idep-the-orch. +func (drAutomationService *DrAutomationServiceV1) CreateManageDr(createManageDrOptions *CreateManageDrOptions) (result *ServiceInstanceManageDr, response *core.DetailedResponse, err error) { + result, response, err = drAutomationService.CreateManageDrWithContext(context.Background(), createManageDrOptions) + err = core.RepurposeSDKProblem(err, "") + return +} + +// CreateManageDrWithContext is an alternate form of the CreateManageDr method which supports a Context parameter +func (drAutomationService *DrAutomationServiceV1) CreateManageDrWithContext(ctx context.Context, createManageDrOptions *CreateManageDrOptions) (result *ServiceInstanceManageDr, response *core.DetailedResponse, err error) { + err = core.ValidateNotNil(createManageDrOptions, "createManageDrOptions cannot be nil") + if err != nil { + err = core.SDKErrorf(err, "", "unexpected-nil-param", common.GetComponentInfo()) + return + } + err = core.ValidateStruct(createManageDrOptions, "createManageDrOptions") + if err != nil { + err = core.SDKErrorf(err, "", "struct-validation-error", common.GetComponentInfo()) + return + } + + pathParamsMap := map[string]string{ + "instance_id": *createManageDrOptions.InstanceID, + } + + builder := core.NewRequestBuilder(core.POST) + builder = builder.WithContext(ctx) + builder.EnableGzipCompression = drAutomationService.GetEnableGzipCompression() + _, err = builder.ResolveRequestURL(drAutomationService.Service.Options.URL, `/drautomation/v1/manage_dr/{instance_id}`, pathParamsMap) + if err != nil { + err = core.SDKErrorf(err, "", "url-resolve-error", common.GetComponentInfo()) + return + } + + for headerName, headerValue := range createManageDrOptions.Headers { + builder.AddHeader(headerName, headerValue) + } + + sdkHeaders := common.GetSdkHeaders("dr_automation_service", "V1", "CreateManageDr") + for headerName, headerValue := range sdkHeaders { + builder.AddHeader(headerName, headerValue) + } + builder.AddHeader("Accept", "application/json") + builder.AddHeader("Content-Type", "application/json") + if createManageDrOptions.AcceptLanguage != nil { + builder.AddHeader("Accept-Language", fmt.Sprint(*createManageDrOptions.AcceptLanguage)) + } + if createManageDrOptions.IfNoneMatch != nil { + builder.AddHeader("If-None-Match", fmt.Sprint(*createManageDrOptions.IfNoneMatch)) + } + + if createManageDrOptions.StandByRedeploy != nil { + builder.AddQuery("stand_by_redeploy", fmt.Sprint(*createManageDrOptions.StandByRedeploy)) + } + if createManageDrOptions.AcceptsIncomplete != nil { + builder.AddQuery("accepts_incomplete", fmt.Sprint(*createManageDrOptions.AcceptsIncomplete)) + } + + body := make(map[string]interface{}) + if createManageDrOptions.APIKey != nil { + body["api_key"] = createManageDrOptions.APIKey + } + if createManageDrOptions.ClientID != nil { + body["client_id"] = createManageDrOptions.ClientID + } + if createManageDrOptions.ClientSecret != nil { + body["client_secret"] = createManageDrOptions.ClientSecret + } + if createManageDrOptions.GUID != nil { + body["guid"] = createManageDrOptions.GUID + } + if createManageDrOptions.LocationID != nil { + body["location_id"] = createManageDrOptions.LocationID + } + if createManageDrOptions.MachineType != nil { + body["machine_type"] = createManageDrOptions.MachineType + } + if createManageDrOptions.OrchestratorHa != nil { + body["orchestrator_ha"] = createManageDrOptions.OrchestratorHa + } + if createManageDrOptions.OrchestratorLocationType != nil { + body["orchestrator_location_type"] = createManageDrOptions.OrchestratorLocationType + } + if createManageDrOptions.OrchestratorName != nil { + body["orchestrator_name"] = createManageDrOptions.OrchestratorName + } + if createManageDrOptions.OrchestratorPassword != nil { + body["orchestrator_password"] = createManageDrOptions.OrchestratorPassword + } + if createManageDrOptions.OrchestratorWorkspaceID != nil { + body["orchestrator_workspace_id"] = createManageDrOptions.OrchestratorWorkspaceID + } + if createManageDrOptions.OrchestratorWorkspaceLocation != nil { + body["orchestrator_workspace_location"] = createManageDrOptions.OrchestratorWorkspaceLocation + } + if createManageDrOptions.ProxyIP != nil { + body["proxy_ip"] = createManageDrOptions.ProxyIP + } + if createManageDrOptions.RegionID != nil { + body["region_id"] = createManageDrOptions.RegionID + } + if createManageDrOptions.ResourceInstance != nil { + body["resource_instance"] = createManageDrOptions.ResourceInstance + } + if createManageDrOptions.SecondaryWorkspaceID != nil { + body["secondary_workspace_id"] = createManageDrOptions.SecondaryWorkspaceID + } + if createManageDrOptions.Secret != nil { + body["secret"] = createManageDrOptions.Secret + } + if createManageDrOptions.SecretGroup != nil { + body["secret_group"] = createManageDrOptions.SecretGroup + } + if createManageDrOptions.SSHKeyName != nil { + body["ssh_key_name"] = createManageDrOptions.SSHKeyName + } + if createManageDrOptions.StandbyMachineType != nil { + body["standby_machine_type"] = createManageDrOptions.StandbyMachineType + } + if createManageDrOptions.StandbyOrchestratorName != nil { + body["standby_orchestrator_name"] = createManageDrOptions.StandbyOrchestratorName + } + if createManageDrOptions.StandbyOrchestratorWorkspaceID != nil { + body["standby_orchestrator_workspace_id"] = createManageDrOptions.StandbyOrchestratorWorkspaceID + } + if createManageDrOptions.StandbyOrchestratorWorkspaceLocation != nil { + body["standby_orchestrator_workspace_location"] = createManageDrOptions.StandbyOrchestratorWorkspaceLocation + } + if createManageDrOptions.StandbyTier != nil { + body["standby_tier"] = createManageDrOptions.StandbyTier + } + if createManageDrOptions.TenantName != nil { + body["tenant_name"] = createManageDrOptions.TenantName + } + if createManageDrOptions.Tier != nil { + body["tier"] = createManageDrOptions.Tier + } + _, err = builder.SetBodyContentJSON(body) + if err != nil { + err = core.SDKErrorf(err, "", "set-json-body-error", common.GetComponentInfo()) + return + } + + request, err := builder.Build() + if err != nil { + err = core.SDKErrorf(err, "", "build-error", common.GetComponentInfo()) + return + } + + var rawResponse map[string]json.RawMessage + response, err = drAutomationService.Service.Request(request, &rawResponse) + if err != nil { + core.EnrichHTTPProblem(err, "create_manage_dr", getServiceComponentInfo()) + err = core.SDKErrorf(err, "", "http-request-err", common.GetComponentInfo()) + return + } + if rawResponse != nil { + err = core.UnmarshalModel(rawResponse, "", &result, UnmarshalServiceInstanceManageDr) + if err != nil { + err = core.SDKErrorf(err, "", "unmarshal-resp-error", common.GetComponentInfo()) + return + } + response.Result = result + } + + return +} + +// GetLastOperation : View details of Last operation performed on the instance +// Retrieves the status of the last operation performed on the specified service instance, such as provisioning, +// updating, or deprovisioning. +func (drAutomationService *DrAutomationServiceV1) GetLastOperation(getLastOperationOptions *GetLastOperationOptions) (result *ServiceInstanceStatus, response *core.DetailedResponse, err error) { + result, response, err = drAutomationService.GetLastOperationWithContext(context.Background(), getLastOperationOptions) + err = core.RepurposeSDKProblem(err, "") + return +} + +// GetLastOperationWithContext is an alternate form of the GetLastOperation method which supports a Context parameter +func (drAutomationService *DrAutomationServiceV1) GetLastOperationWithContext(ctx context.Context, getLastOperationOptions *GetLastOperationOptions) (result *ServiceInstanceStatus, response *core.DetailedResponse, err error) { + err = core.ValidateNotNil(getLastOperationOptions, "getLastOperationOptions cannot be nil") + if err != nil { + err = core.SDKErrorf(err, "", "unexpected-nil-param", common.GetComponentInfo()) + return + } + err = core.ValidateStruct(getLastOperationOptions, "getLastOperationOptions") + if err != nil { + err = core.SDKErrorf(err, "", "struct-validation-error", common.GetComponentInfo()) + return + } + + pathParamsMap := map[string]string{ + "instance_id": *getLastOperationOptions.InstanceID, + } + + builder := core.NewRequestBuilder(core.GET) + builder = builder.WithContext(ctx) + builder.EnableGzipCompression = drAutomationService.GetEnableGzipCompression() + _, err = builder.ResolveRequestURL(drAutomationService.Service.Options.URL, `/drautomation/v1/last_operation/{instance_id}`, pathParamsMap) + if err != nil { + err = core.SDKErrorf(err, "", "url-resolve-error", common.GetComponentInfo()) + return + } + + for headerName, headerValue := range getLastOperationOptions.Headers { + builder.AddHeader(headerName, headerValue) + } + + sdkHeaders := common.GetSdkHeaders("dr_automation_service", "V1", "GetLastOperation") + for headerName, headerValue := range sdkHeaders { + builder.AddHeader(headerName, headerValue) + } + builder.AddHeader("Accept", "application/json") + if getLastOperationOptions.AcceptLanguage != nil { + builder.AddHeader("Accept-Language", fmt.Sprint(*getLastOperationOptions.AcceptLanguage)) + } + if getLastOperationOptions.IfNoneMatch != nil { + builder.AddHeader("If-None-Match", fmt.Sprint(*getLastOperationOptions.IfNoneMatch)) + } + + request, err := builder.Build() + if err != nil { + err = core.SDKErrorf(err, "", "build-error", common.GetComponentInfo()) + return + } + + var rawResponse map[string]json.RawMessage + response, err = drAutomationService.Service.Request(request, &rawResponse) + if err != nil { + core.EnrichHTTPProblem(err, "get_last_operation", getServiceComponentInfo()) + err = core.SDKErrorf(err, "", "http-request-err", common.GetComponentInfo()) + return + } + if rawResponse != nil { + err = core.UnmarshalModel(rawResponse, "", &result, UnmarshalServiceInstanceStatus) + if err != nil { + err = core.SDKErrorf(err, "", "unmarshal-resp-error", common.GetComponentInfo()) + return + } + response.Result = result + } + + return +} + +// ListEvents : Get events from the cloud instance since a specific timestamp +// Retrieves the list of events from the specified service instance ID. +func (drAutomationService *DrAutomationServiceV1) ListEvents(listEventsOptions *ListEventsOptions) (result *EventCollection, response *core.DetailedResponse, err error) { + result, response, err = drAutomationService.ListEventsWithContext(context.Background(), listEventsOptions) + err = core.RepurposeSDKProblem(err, "") + return +} + +// ListEventsWithContext is an alternate form of the ListEvents method which supports a Context parameter +func (drAutomationService *DrAutomationServiceV1) ListEventsWithContext(ctx context.Context, listEventsOptions *ListEventsOptions) (result *EventCollection, response *core.DetailedResponse, err error) { + err = core.ValidateNotNil(listEventsOptions, "listEventsOptions cannot be nil") + if err != nil { + err = core.SDKErrorf(err, "", "unexpected-nil-param", common.GetComponentInfo()) + return + } + err = core.ValidateStruct(listEventsOptions, "listEventsOptions") + if err != nil { + err = core.SDKErrorf(err, "", "struct-validation-error", common.GetComponentInfo()) + return + } + + pathParamsMap := map[string]string{ + "instance_id": *listEventsOptions.InstanceID, + } + + builder := core.NewRequestBuilder(core.GET) + builder = builder.WithContext(ctx) + builder.EnableGzipCompression = drAutomationService.GetEnableGzipCompression() + _, err = builder.ResolveRequestURL(drAutomationService.Service.Options.URL, `/drautomation/v1/service_instances/{instance_id}/events`, pathParamsMap) + if err != nil { + err = core.SDKErrorf(err, "", "url-resolve-error", common.GetComponentInfo()) + return + } + + for headerName, headerValue := range listEventsOptions.Headers { + builder.AddHeader(headerName, headerValue) + } + + sdkHeaders := common.GetSdkHeaders("dr_automation_service", "V1", "ListEvents") + for headerName, headerValue := range sdkHeaders { + builder.AddHeader(headerName, headerValue) + } + builder.AddHeader("Accept", "application/json") + if listEventsOptions.AcceptLanguage != nil { + builder.AddHeader("Accept-Language", fmt.Sprint(*listEventsOptions.AcceptLanguage)) + } + if listEventsOptions.IfNoneMatch != nil { + builder.AddHeader("If-None-Match", fmt.Sprint(*listEventsOptions.IfNoneMatch)) + } + + if listEventsOptions.Time != nil { + builder.AddQuery("time", fmt.Sprint(*listEventsOptions.Time)) + } + if listEventsOptions.FromTime != nil { + builder.AddQuery("from_time", fmt.Sprint(*listEventsOptions.FromTime)) + } + if listEventsOptions.ToTime != nil { + builder.AddQuery("to_time", fmt.Sprint(*listEventsOptions.ToTime)) + } + + request, err := builder.Build() + if err != nil { + err = core.SDKErrorf(err, "", "build-error", common.GetComponentInfo()) + return + } + + var rawResponse map[string]json.RawMessage + response, err = drAutomationService.Service.Request(request, &rawResponse) + if err != nil { + core.EnrichHTTPProblem(err, "list_events", getServiceComponentInfo()) + err = core.SDKErrorf(err, "", "http-request-err", common.GetComponentInfo()) + return + } + if rawResponse != nil { + err = core.UnmarshalModel(rawResponse, "", &result, UnmarshalEventCollection) + if err != nil { + err = core.SDKErrorf(err, "", "unmarshal-resp-error", common.GetComponentInfo()) + return + } + response.Result = result + } + + return +} + +// GetEvent : Get a single event +// Retrieves the details of a specific event for the given service instance provision ID. +func (drAutomationService *DrAutomationServiceV1) GetEvent(getEventOptions *GetEventOptions) (result *Event, response *core.DetailedResponse, err error) { + result, response, err = drAutomationService.GetEventWithContext(context.Background(), getEventOptions) + err = core.RepurposeSDKProblem(err, "") + return +} + +// GetEventWithContext is an alternate form of the GetEvent method which supports a Context parameter +func (drAutomationService *DrAutomationServiceV1) GetEventWithContext(ctx context.Context, getEventOptions *GetEventOptions) (result *Event, response *core.DetailedResponse, err error) { + err = core.ValidateNotNil(getEventOptions, "getEventOptions cannot be nil") + if err != nil { + err = core.SDKErrorf(err, "", "unexpected-nil-param", common.GetComponentInfo()) + return + } + err = core.ValidateStruct(getEventOptions, "getEventOptions") + if err != nil { + err = core.SDKErrorf(err, "", "struct-validation-error", common.GetComponentInfo()) + return + } + + pathParamsMap := map[string]string{ + "instance_id": *getEventOptions.InstanceID, + "event_id": *getEventOptions.EventID, + } + + builder := core.NewRequestBuilder(core.GET) + builder = builder.WithContext(ctx) + builder.EnableGzipCompression = drAutomationService.GetEnableGzipCompression() + _, err = builder.ResolveRequestURL(drAutomationService.Service.Options.URL, `/drautomation/v1/service_instances/{instance_id}/events/{event_id}`, pathParamsMap) + if err != nil { + err = core.SDKErrorf(err, "", "url-resolve-error", common.GetComponentInfo()) + return + } + + for headerName, headerValue := range getEventOptions.Headers { + builder.AddHeader(headerName, headerValue) + } + + sdkHeaders := common.GetSdkHeaders("dr_automation_service", "V1", "GetEvent") + for headerName, headerValue := range sdkHeaders { + builder.AddHeader(headerName, headerValue) + } + builder.AddHeader("Accept", "application/json") + if getEventOptions.AcceptLanguage != nil { + builder.AddHeader("Accept-Language", fmt.Sprint(*getEventOptions.AcceptLanguage)) + } + if getEventOptions.IfNoneMatch != nil { + builder.AddHeader("If-None-Match", fmt.Sprint(*getEventOptions.IfNoneMatch)) + } + + request, err := builder.Build() + if err != nil { + err = core.SDKErrorf(err, "", "build-error", common.GetComponentInfo()) + return + } + + var rawResponse map[string]json.RawMessage + response, err = drAutomationService.Service.Request(request, &rawResponse) + if err != nil { + core.EnrichHTTPProblem(err, "get_event", getServiceComponentInfo()) + err = core.SDKErrorf(err, "", "http-request-err", common.GetComponentInfo()) + return + } + if rawResponse != nil { + err = core.UnmarshalModel(rawResponse, "", &result, UnmarshalEvent) + if err != nil { + err = core.SDKErrorf(err, "", "unmarshal-resp-error", common.GetComponentInfo()) + return + } + response.Result = result + } + + return +} +func getServiceComponentInfo() *core.ProblemComponent { + return core.NewProblemComponent(DefaultServiceName, "1.0.0") +} + +// CreateApikeyOptions : The CreateApikey options. +type CreateApikeyOptions struct { + // instance id of instance to provision. + InstanceID *string `json:"instance_id" validate:"required,ne="` + + // The API key to validate. + APIKey *string `json:"api_key" validate:"required"` + + // The language requested for the return document. + AcceptLanguage *string `json:"Accept-Language,omitempty"` + + // ETag for conditional requests (optional). + IfNoneMatch *string `json:"If-None-Match,omitempty"` + + // Allows users to set headers on API requests. + Headers map[string]string +} + +// NewCreateApikeyOptions : Instantiate CreateApikeyOptions +func (*DrAutomationServiceV1) NewCreateApikeyOptions(instanceID string, apiKey string) *CreateApikeyOptions { + return &CreateApikeyOptions{ + InstanceID: core.StringPtr(instanceID), + APIKey: core.StringPtr(apiKey), + } +} + +// SetInstanceID : Allow user to set InstanceID +func (_options *CreateApikeyOptions) SetInstanceID(instanceID string) *CreateApikeyOptions { + _options.InstanceID = core.StringPtr(instanceID) + return _options +} + +// SetAPIKey : Allow user to set APIKey +func (_options *CreateApikeyOptions) SetAPIKey(apiKey string) *CreateApikeyOptions { + _options.APIKey = core.StringPtr(apiKey) + return _options +} + +// SetAcceptLanguage : Allow user to set AcceptLanguage +func (_options *CreateApikeyOptions) SetAcceptLanguage(acceptLanguage string) *CreateApikeyOptions { + _options.AcceptLanguage = core.StringPtr(acceptLanguage) + return _options +} + +// SetIfNoneMatch : Allow user to set IfNoneMatch +func (_options *CreateApikeyOptions) SetIfNoneMatch(ifNoneMatch string) *CreateApikeyOptions { + _options.IfNoneMatch = core.StringPtr(ifNoneMatch) + return _options +} + +// SetHeaders : Allow user to set Headers +func (options *CreateApikeyOptions) SetHeaders(param map[string]string) *CreateApikeyOptions { + options.Headers = param + return options +} + +// CreateManageDrOptions : The CreateManageDr options. +type CreateManageDrOptions struct { + // instance id of instance to provision. + InstanceID *string `json:"instance_id" validate:"required,ne="` + + // The api Key of the service instance for deploying the disaster recovery service. + APIKey *string `json:"api_key,omitempty"` + + // The Client Id created for MFA authentication API. + ClientID *string `json:"client_id,omitempty"` + + // The client secret created for MFA authentication API. + ClientSecret *string `json:"client_secret,omitempty"` + + // The global unique identifier of the service instance. + GUID *string `json:"guid,omitempty"` + + // The location or data center identifier where the service instance is deployed. + LocationID *string `json:"location_id,omitempty"` + + // The machine type used for deploying orchestrator. + MachineType *string `json:"machine_type,omitempty"` + + // Indicates whether the orchestrator High Availability (HA) is enabled for the service instance. + OrchestratorHa *bool `json:"orchestrator_ha,omitempty"` + + // The cloud location where your orchestator need to be created. + OrchestratorLocationType *string `json:"orchestrator_location_type,omitempty"` + + // The username used for the orchestrator. + OrchestratorName *string `json:"orchestrator_name,omitempty"` + + // The password that you can use to access your orchestrator. + OrchestratorPassword *string `json:"orchestrator_password,omitempty"` + + // The unique identifier orchestrator workspace. + OrchestratorWorkspaceID *string `json:"orchestrator_workspace_id,omitempty"` + + // The location of the orchestrator workspace. + OrchestratorWorkspaceLocation *string `json:"orchestrator_workspace_location,omitempty"` + + // Proxy IP for the Communication between Orchestrator and Service broker. + ProxyIP *string `json:"proxy_ip,omitempty"` + + // The power virtual server region where the service instance is deployed. + RegionID *string `json:"region_id,omitempty"` + + // The uniquie identifier of the associated IBM Cloud resource instance. + ResourceInstance *string `json:"resource_instance,omitempty"` + + // The unique identifier of the secondary workspace used for the disaster recovery. + SecondaryWorkspaceID *string `json:"secondary_workspace_id,omitempty"` + + // The secret name or identifier used for retrieving credentials from secrets manager. + Secret *string `json:"secret,omitempty"` + + // The secret group name in IBM Cloud Secrets Manager containing sensitive data for the service instance. + SecretGroup *string `json:"secret_group,omitempty"` + + // The name of the SSH key used for deploying the orchestator. + SSHKeyName *string `json:"ssh_key_name,omitempty"` + + // The machine type used for deploying standby virtual machines. + StandbyMachineType *string `json:"standby_machine_type,omitempty"` + + // The username for the standby orchestrator management interface. + StandbyOrchestratorName *string `json:"standby_orchestrator_name,omitempty"` + + // The unique identifier of the standby orchestrator workspace. + StandbyOrchestratorWorkspaceID *string `json:"standby_orchestrator_workspace_id,omitempty"` + + // The location of the standby orchestrator workspace. + StandbyOrchestratorWorkspaceLocation *string `json:"standby_orchestrator_workspace_location,omitempty"` + + // The storage tier used for deploying standby orchestrator. + StandbyTier *string `json:"standby_tier,omitempty"` + + // The tenant name for MFA authentication API. + TenantName *string `json:"tenant_name,omitempty"` + + // The storage tier used for deploying primary orchestrator. + Tier *string `json:"tier,omitempty"` + + // Flag to indicate if standby should be redeployed (must be "true" or "false"). + StandByRedeploy *string `json:"stand_by_redeploy,omitempty"` + + // The language requested for the return document. + AcceptLanguage *string `json:"Accept-Language,omitempty"` + + // ETag for conditional requests (optional). + IfNoneMatch *string `json:"If-None-Match,omitempty"` + + // A value of true indicates that both the IBM Cloud platform and the requesting client support asynchronous + // deprovisioning. + AcceptsIncomplete *bool `json:"accepts_incomplete,omitempty"` + + // Allows users to set headers on API requests. + Headers map[string]string +} + +// NewCreateManageDrOptions : Instantiate CreateManageDrOptions +func (*DrAutomationServiceV1) NewCreateManageDrOptions(instanceID string) *CreateManageDrOptions { + return &CreateManageDrOptions{ + InstanceID: core.StringPtr(instanceID), + } +} + +// SetInstanceID : Allow user to set InstanceID +func (_options *CreateManageDrOptions) SetInstanceID(instanceID string) *CreateManageDrOptions { + _options.InstanceID = core.StringPtr(instanceID) + return _options +} + +// SetAPIKey : Allow user to set APIKey +func (_options *CreateManageDrOptions) SetAPIKey(apiKey string) *CreateManageDrOptions { + _options.APIKey = core.StringPtr(apiKey) + return _options +} + +// SetClientID : Allow user to set ClientID +func (_options *CreateManageDrOptions) SetClientID(clientID string) *CreateManageDrOptions { + _options.ClientID = core.StringPtr(clientID) + return _options +} + +// SetClientSecret : Allow user to set ClientSecret +func (_options *CreateManageDrOptions) SetClientSecret(clientSecret string) *CreateManageDrOptions { + _options.ClientSecret = core.StringPtr(clientSecret) + return _options +} + +// SetGUID : Allow user to set GUID +func (_options *CreateManageDrOptions) SetGUID(guid string) *CreateManageDrOptions { + _options.GUID = core.StringPtr(guid) + return _options +} + +// SetLocationID : Allow user to set LocationID +func (_options *CreateManageDrOptions) SetLocationID(locationID string) *CreateManageDrOptions { + _options.LocationID = core.StringPtr(locationID) + return _options +} + +// SetMachineType : Allow user to set MachineType +func (_options *CreateManageDrOptions) SetMachineType(machineType string) *CreateManageDrOptions { + _options.MachineType = core.StringPtr(machineType) + return _options +} + +// SetOrchestratorHa : Allow user to set OrchestratorHa +func (_options *CreateManageDrOptions) SetOrchestratorHa(orchestratorHa bool) *CreateManageDrOptions { + _options.OrchestratorHa = core.BoolPtr(orchestratorHa) + return _options +} + +// SetOrchestratorLocationType : Allow user to set OrchestratorLocationType +func (_options *CreateManageDrOptions) SetOrchestratorLocationType(orchestratorLocationType string) *CreateManageDrOptions { + _options.OrchestratorLocationType = core.StringPtr(orchestratorLocationType) + return _options +} + +// SetOrchestratorName : Allow user to set OrchestratorName +func (_options *CreateManageDrOptions) SetOrchestratorName(orchestratorName string) *CreateManageDrOptions { + _options.OrchestratorName = core.StringPtr(orchestratorName) + return _options +} + +// SetOrchestratorPassword : Allow user to set OrchestratorPassword +func (_options *CreateManageDrOptions) SetOrchestratorPassword(orchestratorPassword string) *CreateManageDrOptions { + _options.OrchestratorPassword = core.StringPtr(orchestratorPassword) + return _options +} + +// SetOrchestratorWorkspaceID : Allow user to set OrchestratorWorkspaceID +func (_options *CreateManageDrOptions) SetOrchestratorWorkspaceID(orchestratorWorkspaceID string) *CreateManageDrOptions { + _options.OrchestratorWorkspaceID = core.StringPtr(orchestratorWorkspaceID) + return _options +} + +// SetOrchestratorWorkspaceLocation : Allow user to set OrchestratorWorkspaceLocation +func (_options *CreateManageDrOptions) SetOrchestratorWorkspaceLocation(orchestratorWorkspaceLocation string) *CreateManageDrOptions { + _options.OrchestratorWorkspaceLocation = core.StringPtr(orchestratorWorkspaceLocation) + return _options +} + +// SetProxyIP : Allow user to set ProxyIP +func (_options *CreateManageDrOptions) SetProxyIP(proxyIP string) *CreateManageDrOptions { + _options.ProxyIP = core.StringPtr(proxyIP) + return _options +} + +// SetRegionID : Allow user to set RegionID +func (_options *CreateManageDrOptions) SetRegionID(regionID string) *CreateManageDrOptions { + _options.RegionID = core.StringPtr(regionID) + return _options +} + +// SetResourceInstance : Allow user to set ResourceInstance +func (_options *CreateManageDrOptions) SetResourceInstance(resourceInstance string) *CreateManageDrOptions { + _options.ResourceInstance = core.StringPtr(resourceInstance) + return _options +} + +// SetSecondaryWorkspaceID : Allow user to set SecondaryWorkspaceID +func (_options *CreateManageDrOptions) SetSecondaryWorkspaceID(secondaryWorkspaceID string) *CreateManageDrOptions { + _options.SecondaryWorkspaceID = core.StringPtr(secondaryWorkspaceID) + return _options +} + +// SetSecret : Allow user to set Secret +func (_options *CreateManageDrOptions) SetSecret(secret string) *CreateManageDrOptions { + _options.Secret = core.StringPtr(secret) + return _options +} + +// SetSecretGroup : Allow user to set SecretGroup +func (_options *CreateManageDrOptions) SetSecretGroup(secretGroup string) *CreateManageDrOptions { + _options.SecretGroup = core.StringPtr(secretGroup) + return _options +} + +// SetSSHKeyName : Allow user to set SSHKeyName +func (_options *CreateManageDrOptions) SetSSHKeyName(sshKeyName string) *CreateManageDrOptions { + _options.SSHKeyName = core.StringPtr(sshKeyName) + return _options +} + +// SetStandbyMachineType : Allow user to set StandbyMachineType +func (_options *CreateManageDrOptions) SetStandbyMachineType(standbyMachineType string) *CreateManageDrOptions { + _options.StandbyMachineType = core.StringPtr(standbyMachineType) + return _options +} + +// SetStandbyOrchestratorName : Allow user to set StandbyOrchestratorName +func (_options *CreateManageDrOptions) SetStandbyOrchestratorName(standbyOrchestratorName string) *CreateManageDrOptions { + _options.StandbyOrchestratorName = core.StringPtr(standbyOrchestratorName) + return _options +} + +// SetStandbyOrchestratorWorkspaceID : Allow user to set StandbyOrchestratorWorkspaceID +func (_options *CreateManageDrOptions) SetStandbyOrchestratorWorkspaceID(standbyOrchestratorWorkspaceID string) *CreateManageDrOptions { + _options.StandbyOrchestratorWorkspaceID = core.StringPtr(standbyOrchestratorWorkspaceID) + return _options +} + +// SetStandbyOrchestratorWorkspaceLocation : Allow user to set StandbyOrchestratorWorkspaceLocation +func (_options *CreateManageDrOptions) SetStandbyOrchestratorWorkspaceLocation(standbyOrchestratorWorkspaceLocation string) *CreateManageDrOptions { + _options.StandbyOrchestratorWorkspaceLocation = core.StringPtr(standbyOrchestratorWorkspaceLocation) + return _options +} + +// SetStandbyTier : Allow user to set StandbyTier +func (_options *CreateManageDrOptions) SetStandbyTier(standbyTier string) *CreateManageDrOptions { + _options.StandbyTier = core.StringPtr(standbyTier) + return _options +} + +// SetTenantName : Allow user to set TenantName +func (_options *CreateManageDrOptions) SetTenantName(tenantName string) *CreateManageDrOptions { + _options.TenantName = core.StringPtr(tenantName) + return _options +} + +// SetTier : Allow user to set Tier +func (_options *CreateManageDrOptions) SetTier(tier string) *CreateManageDrOptions { + _options.Tier = core.StringPtr(tier) + return _options +} + +// SetStandByRedeploy : Allow user to set StandByRedeploy +func (_options *CreateManageDrOptions) SetStandByRedeploy(standByRedeploy string) *CreateManageDrOptions { + _options.StandByRedeploy = core.StringPtr(standByRedeploy) + return _options +} + +// SetAcceptLanguage : Allow user to set AcceptLanguage +func (_options *CreateManageDrOptions) SetAcceptLanguage(acceptLanguage string) *CreateManageDrOptions { + _options.AcceptLanguage = core.StringPtr(acceptLanguage) + return _options +} + +// SetIfNoneMatch : Allow user to set IfNoneMatch +func (_options *CreateManageDrOptions) SetIfNoneMatch(ifNoneMatch string) *CreateManageDrOptions { + _options.IfNoneMatch = core.StringPtr(ifNoneMatch) + return _options +} + +// SetAcceptsIncomplete : Allow user to set AcceptsIncomplete +func (_options *CreateManageDrOptions) SetAcceptsIncomplete(acceptsIncomplete bool) *CreateManageDrOptions { + _options.AcceptsIncomplete = core.BoolPtr(acceptsIncomplete) + return _options +} + +// SetHeaders : Allow user to set Headers +func (options *CreateManageDrOptions) SetHeaders(param map[string]string) *CreateManageDrOptions { + options.Headers = param + return options +} + +// DrStandbyWorkspace : Represents the standby DR workspace details. +type DrStandbyWorkspace struct { + // The detailed information of the standby DR workspace. + Details *DetailsDr `json:"details,omitempty"` + + // The unique identifier of the standby workspace. + ID *string `json:"id,omitempty"` + + // The location information of the standby workspace. + Location *LocationDr `json:"location,omitempty"` + + // The name of the standby workspace. + Name *string `json:"name,omitempty"` + + // The status of the standby workspace. + Status *string `json:"status,omitempty"` +} + +// UnmarshalDrStandbyWorkspace unmarshals an instance of DrStandbyWorkspace from the specified map of raw messages. +func UnmarshalDrStandbyWorkspace(m map[string]json.RawMessage, result interface{}) (err error) { + obj := new(DrStandbyWorkspace) + err = core.UnmarshalModel(m, "details", &obj.Details, UnmarshalDetailsDr) + if err != nil { + err = core.SDKErrorf(err, "", "details-error", common.GetComponentInfo()) + return + } + err = core.UnmarshalPrimitive(m, "id", &obj.ID) + if err != nil { + err = core.SDKErrorf(err, "", "id-error", common.GetComponentInfo()) + return + } + err = core.UnmarshalModel(m, "location", &obj.Location, UnmarshalLocationDr) + if err != nil { + err = core.SDKErrorf(err, "", "location-error", common.GetComponentInfo()) + return + } + err = core.UnmarshalPrimitive(m, "name", &obj.Name) + if err != nil { + err = core.SDKErrorf(err, "", "name-error", common.GetComponentInfo()) + return + } + err = core.UnmarshalPrimitive(m, "status", &obj.Status) + if err != nil { + err = core.SDKErrorf(err, "", "status-error", common.GetComponentInfo()) + return + } + reflect.ValueOf(result).Elem().Set(reflect.ValueOf(obj)) + return +} + +// DrWorkspace : Represents a disaster recovery workspace, including the details, location, and status. +type DrWorkspace struct { + // Indicates if this is the default DR workspace. + Default *bool `json:"default,omitempty"` + + // The detailed information about the DR workspace. + Details *DetailsDr `json:"details,omitempty"` + + // The unique identifier of the DR workspace. + ID *string `json:"id,omitempty"` + + // The location information of the DR workspace. + Location *LocationDr `json:"location,omitempty"` + + // The name of the DR workspace. + Name *string `json:"name,omitempty"` + + // The status of the DR workspace. + Status *string `json:"status,omitempty"` +} + +// UnmarshalDrWorkspace unmarshals an instance of DrWorkspace from the specified map of raw messages. +func UnmarshalDrWorkspace(m map[string]json.RawMessage, result interface{}) (err error) { + obj := new(DrWorkspace) + err = core.UnmarshalPrimitive(m, "default", &obj.Default) + if err != nil { + err = core.SDKErrorf(err, "", "default-error", common.GetComponentInfo()) + return + } + err = core.UnmarshalModel(m, "details", &obj.Details, UnmarshalDetailsDr) + if err != nil { + err = core.SDKErrorf(err, "", "details-error", common.GetComponentInfo()) + return + } + err = core.UnmarshalPrimitive(m, "id", &obj.ID) + if err != nil { + err = core.SDKErrorf(err, "", "id-error", common.GetComponentInfo()) + return + } + err = core.UnmarshalModel(m, "location", &obj.Location, UnmarshalLocationDr) + if err != nil { + err = core.SDKErrorf(err, "", "location-error", common.GetComponentInfo()) + return + } + err = core.UnmarshalPrimitive(m, "name", &obj.Name) + if err != nil { + err = core.SDKErrorf(err, "", "name-error", common.GetComponentInfo()) + return + } + err = core.UnmarshalPrimitive(m, "status", &obj.Status) + if err != nil { + err = core.SDKErrorf(err, "", "status-error", common.GetComponentInfo()) + return + } + reflect.ValueOf(result).Elem().Set(reflect.ValueOf(obj)) + return +} + +// DetailsDr : Details of the DR workspace. +type DetailsDr struct { + // Cloud Resource Name (CRN) of the DR workspace. + CRN *string `json:"crn,omitempty"` +} + +// UnmarshalDetailsDr unmarshals an instance of DetailsDr from the specified map of raw messages. +func UnmarshalDetailsDr(m map[string]json.RawMessage, result interface{}) (err error) { + obj := new(DetailsDr) + err = core.UnmarshalPrimitive(m, "crn", &obj.CRN) + if err != nil { + err = core.SDKErrorf(err, "", "crn-error", common.GetComponentInfo()) + return + } + reflect.ValueOf(result).Elem().Set(reflect.ValueOf(obj)) + return +} + +// DrAutomationGetSummaryResponse : Response object containing all DR automation summary information. +type DrAutomationGetSummaryResponse struct { + // A flexible schema placeholder to allow any JSON value (aligns with interface{} in Go). + ManagedVMList map[string]interface{} `json:"managed_vm_list" validate:"required"` + + // Contains details about the orchestrator configuration. + OrchestratorDetails *OrchestratorDetails `json:"orchestrator_details" validate:"required"` + + // Contains details about the DR automation service. + ServiceDetails *ServiceDetails `json:"service_details" validate:"required"` +} + +// UnmarshalDrAutomationGetSummaryResponse unmarshals an instance of DrAutomationGetSummaryResponse from the specified map of raw messages. +func UnmarshalDrAutomationGetSummaryResponse(m map[string]json.RawMessage, result interface{}) (err error) { + obj := new(DrAutomationGetSummaryResponse) + err = core.UnmarshalPrimitive(m, "managed_vm_list", &obj.ManagedVMList) + if err != nil { + err = core.SDKErrorf(err, "", "managed_vm_list-error", common.GetComponentInfo()) + return + } + err = core.UnmarshalModel(m, "orchestrator_details", &obj.OrchestratorDetails, UnmarshalOrchestratorDetails) + if err != nil { + err = core.SDKErrorf(err, "", "orchestrator_details-error", common.GetComponentInfo()) + return + } + err = core.UnmarshalModel(m, "service_details", &obj.ServiceDetails, UnmarshalServiceDetails) + if err != nil { + err = core.SDKErrorf(err, "", "service_details-error", common.GetComponentInfo()) + return + } + reflect.ValueOf(result).Elem().Set(reflect.ValueOf(obj)) + return +} + +// DrData : The list of primary and standby disaster recovery Power virtual server workspaces. +type DrData struct { + // Description of Standby Workspace. + DrStandbyWorkspaceDescription interface{} `json:"dr_standby_workspace_description,omitempty"` + + // The list of standby disaster recovery workspaces. + DrStandbyWorkspaces []DrStandbyWorkspace `json:"dr_standby_workspaces" validate:"required"` + + // Description of Workspace. + DrWorkspaceDescription interface{} `json:"dr_workspace_description,omitempty"` + + // The list of primary disaster recovery workspaces. + DrWorkspaces []DrWorkspace `json:"dr_workspaces" validate:"required"` +} + +// UnmarshalDrData unmarshals an instance of DrData from the specified map of raw messages. +func UnmarshalDrData(m map[string]json.RawMessage, result interface{}) (err error) { + obj := new(DrData) + err = core.UnmarshalPrimitive(m, "dr_standby_workspace_description", &obj.DrStandbyWorkspaceDescription) + if err != nil { + err = core.SDKErrorf(err, "", "dr_standby_workspace_description-error", common.GetComponentInfo()) + return + } + err = core.UnmarshalModel(m, "dr_standby_workspaces", &obj.DrStandbyWorkspaces, UnmarshalDrStandbyWorkspace) + if err != nil { + err = core.SDKErrorf(err, "", "dr_standby_workspaces-error", common.GetComponentInfo()) + return + } + err = core.UnmarshalPrimitive(m, "dr_workspace_description", &obj.DrWorkspaceDescription) + if err != nil { + err = core.SDKErrorf(err, "", "dr_workspace_description-error", common.GetComponentInfo()) + return + } + err = core.UnmarshalModel(m, "dr_workspaces", &obj.DrWorkspaces, UnmarshalDrWorkspace) + if err != nil { + err = core.SDKErrorf(err, "", "dr_workspaces-error", common.GetComponentInfo()) + return + } + reflect.ValueOf(result).Elem().Set(reflect.ValueOf(obj)) + return +} + +// DrLocation : Represents a disaster recovery location with its ID and name. . +type DrLocation struct { + // Unique identifier of the DR location. + ID *string `json:"id,omitempty"` + + // The name of the Power virtual server DR location . + Name *string `json:"name,omitempty"` +} + +// UnmarshalDrLocation unmarshals an instance of DrLocation from the specified map of raw messages. +func UnmarshalDrLocation(m map[string]json.RawMessage, result interface{}) (err error) { + obj := new(DrLocation) + err = core.UnmarshalPrimitive(m, "id", &obj.ID) + if err != nil { + err = core.SDKErrorf(err, "", "id-error", common.GetComponentInfo()) + return + } + err = core.UnmarshalPrimitive(m, "name", &obj.Name) + if err != nil { + err = core.SDKErrorf(err, "", "name-error", common.GetComponentInfo()) + return + } + reflect.ValueOf(result).Elem().Set(reflect.ValueOf(obj)) + return +} + +// Event : Represents an individual event in the system, including details about action, resource, user, and timestamps. +type Event struct { + // Type of action for this event. + Action *string `json:"action" validate:"required"` + + // Source of API when it being executed. + APISource *string `json:"api_source,omitempty"` + + // ID of the Activity. + EventID *string `json:"event_id" validate:"required"` + + // Level of the event (notice, info, warning, error). + Level *string `json:"level" validate:"required"` + + // The (translated) message of the event. + Message *string `json:"message" validate:"required"` + + // A flexible schema placeholder to allow any JSON value (aligns with interface{} in Go). + MessageData map[string]interface{} `json:"message_data,omitempty"` + + // A flexible schema placeholder to allow any JSON value (aligns with interface{} in Go). + Metadata map[string]interface{} `json:"metadata,omitempty"` + + // Type of resource for this event. + Resource *string `json:"resource" validate:"required"` + + // Time of activity in ISO 8601 - RFC3339. + Time *strfmt.DateTime `json:"time" validate:"required"` + + // Time of activity in unix epoch. + Timestamp *string `json:"timestamp" validate:"required"` + + // Information about a user associated with an event. + User *EventUser `json:"user,omitempty"` +} + +// Constants associated with the Event.Level property. +// Level of the event (notice, info, warning, error). +const ( + EventLevelErrorConst = "error" + EventLevelInfoConst = "info" + EventLevelNoticeConst = "notice" + EventLevelWarningConst = "warning" +) + +// UnmarshalEvent unmarshals an instance of Event from the specified map of raw messages. +func UnmarshalEvent(m map[string]json.RawMessage, result interface{}) (err error) { + obj := new(Event) + err = core.UnmarshalPrimitive(m, "action", &obj.Action) + if err != nil { + err = core.SDKErrorf(err, "", "action-error", common.GetComponentInfo()) + return + } + err = core.UnmarshalPrimitive(m, "api_source", &obj.APISource) + if err != nil { + err = core.SDKErrorf(err, "", "api_source-error", common.GetComponentInfo()) + return + } + err = core.UnmarshalPrimitive(m, "event_id", &obj.EventID) + if err != nil { + err = core.SDKErrorf(err, "", "event_id-error", common.GetComponentInfo()) + return + } + err = core.UnmarshalPrimitive(m, "level", &obj.Level) + if err != nil { + err = core.SDKErrorf(err, "", "level-error", common.GetComponentInfo()) + return + } + err = core.UnmarshalPrimitive(m, "message", &obj.Message) + if err != nil { + err = core.SDKErrorf(err, "", "message-error", common.GetComponentInfo()) + return + } + err = core.UnmarshalPrimitive(m, "message_data", &obj.MessageData) + if err != nil { + err = core.SDKErrorf(err, "", "message_data-error", common.GetComponentInfo()) + return + } + err = core.UnmarshalPrimitive(m, "metadata", &obj.Metadata) + if err != nil { + err = core.SDKErrorf(err, "", "metadata-error", common.GetComponentInfo()) + return + } + err = core.UnmarshalPrimitive(m, "resource", &obj.Resource) + if err != nil { + err = core.SDKErrorf(err, "", "resource-error", common.GetComponentInfo()) + return + } + err = core.UnmarshalPrimitive(m, "time", &obj.Time) + if err != nil { + err = core.SDKErrorf(err, "", "time-error", common.GetComponentInfo()) + return + } + err = core.UnmarshalPrimitive(m, "timestamp", &obj.Timestamp) + if err != nil { + err = core.SDKErrorf(err, "", "timestamp-error", common.GetComponentInfo()) + return + } + err = core.UnmarshalModel(m, "user", &obj.User, UnmarshalEventUser) + if err != nil { + err = core.SDKErrorf(err, "", "user-error", common.GetComponentInfo()) + return + } + reflect.ValueOf(result).Elem().Set(reflect.ValueOf(obj)) + return +} + +// EventCollection : Container object holding a list of events. +type EventCollection struct { + // Events. + Event []Event `json:"event" validate:"required"` +} + +// UnmarshalEventCollection unmarshals an instance of EventCollection from the specified map of raw messages. +func UnmarshalEventCollection(m map[string]json.RawMessage, result interface{}) (err error) { + obj := new(EventCollection) + err = core.UnmarshalModel(m, "event", &obj.Event, UnmarshalEvent) + if err != nil { + err = core.SDKErrorf(err, "", "event-error", common.GetComponentInfo()) + return + } + reflect.ValueOf(result).Elem().Set(reflect.ValueOf(obj)) + return +} + +// EventUser : Information about a user associated with an event. +type EventUser struct { + // Email of the User. + Email *string `json:"email,omitempty"` + + // Name of the User. + Name *string `json:"name,omitempty"` + + // ID of user who created/caused the event. + UserID *string `json:"user_id" validate:"required"` +} + +// UnmarshalEventUser unmarshals an instance of EventUser from the specified map of raw messages. +func UnmarshalEventUser(m map[string]json.RawMessage, result interface{}) (err error) { + obj := new(EventUser) + err = core.UnmarshalPrimitive(m, "email", &obj.Email) + if err != nil { + err = core.SDKErrorf(err, "", "email-error", common.GetComponentInfo()) + return + } + err = core.UnmarshalPrimitive(m, "name", &obj.Name) + if err != nil { + err = core.SDKErrorf(err, "", "name-error", common.GetComponentInfo()) + return + } + err = core.UnmarshalPrimitive(m, "user_id", &obj.UserID) + if err != nil { + err = core.SDKErrorf(err, "", "user_id-error", common.GetComponentInfo()) + return + } + reflect.ValueOf(result).Elem().Set(reflect.ValueOf(obj)) + return +} + +// GetApikeyOptions : The GetApikey options. +type GetApikeyOptions struct { + // instance id of instance to provision. + InstanceID *string `json:"instance_id" validate:"required,ne="` + + // The language requested for the return document. + AcceptLanguage *string `json:"Accept-Language,omitempty"` + + // ETag for conditional requests (optional). + IfNoneMatch *string `json:"If-None-Match,omitempty"` + + // Allows users to set headers on API requests. + Headers map[string]string +} + +// NewGetApikeyOptions : Instantiate GetApikeyOptions +func (*DrAutomationServiceV1) NewGetApikeyOptions(instanceID string) *GetApikeyOptions { + return &GetApikeyOptions{ + InstanceID: core.StringPtr(instanceID), + } +} + +// SetInstanceID : Allow user to set InstanceID +func (_options *GetApikeyOptions) SetInstanceID(instanceID string) *GetApikeyOptions { + _options.InstanceID = core.StringPtr(instanceID) + return _options +} + +// SetAcceptLanguage : Allow user to set AcceptLanguage +func (_options *GetApikeyOptions) SetAcceptLanguage(acceptLanguage string) *GetApikeyOptions { + _options.AcceptLanguage = core.StringPtr(acceptLanguage) + return _options +} + +// SetIfNoneMatch : Allow user to set IfNoneMatch +func (_options *GetApikeyOptions) SetIfNoneMatch(ifNoneMatch string) *GetApikeyOptions { + _options.IfNoneMatch = core.StringPtr(ifNoneMatch) + return _options +} + +// SetHeaders : Allow user to set Headers +func (options *GetApikeyOptions) SetHeaders(param map[string]string) *GetApikeyOptions { + options.Headers = param + return options +} + +// GetDrGrsLocationPairOptions : The GetDrGrsLocationPair options. +type GetDrGrsLocationPairOptions struct { + // instance id of instance to provision. + InstanceID *string `json:"instance_id" validate:"required,ne="` + + // The language requested for the return document. + AcceptLanguage *string `json:"Accept-Language,omitempty"` + + // ETag for conditional requests (optional). + IfNoneMatch *string `json:"If-None-Match,omitempty"` + + // Allows users to set headers on API requests. + Headers map[string]string +} + +// NewGetDrGrsLocationPairOptions : Instantiate GetDrGrsLocationPairOptions +func (*DrAutomationServiceV1) NewGetDrGrsLocationPairOptions(instanceID string) *GetDrGrsLocationPairOptions { + return &GetDrGrsLocationPairOptions{ + InstanceID: core.StringPtr(instanceID), + } +} + +// SetInstanceID : Allow user to set InstanceID +func (_options *GetDrGrsLocationPairOptions) SetInstanceID(instanceID string) *GetDrGrsLocationPairOptions { + _options.InstanceID = core.StringPtr(instanceID) + return _options +} + +// SetAcceptLanguage : Allow user to set AcceptLanguage +func (_options *GetDrGrsLocationPairOptions) SetAcceptLanguage(acceptLanguage string) *GetDrGrsLocationPairOptions { + _options.AcceptLanguage = core.StringPtr(acceptLanguage) + return _options +} + +// SetIfNoneMatch : Allow user to set IfNoneMatch +func (_options *GetDrGrsLocationPairOptions) SetIfNoneMatch(ifNoneMatch string) *GetDrGrsLocationPairOptions { + _options.IfNoneMatch = core.StringPtr(ifNoneMatch) + return _options +} + +// SetHeaders : Allow user to set Headers +func (options *GetDrGrsLocationPairOptions) SetHeaders(param map[string]string) *GetDrGrsLocationPairOptions { + options.Headers = param + return options +} + +// GetDrLocationsOptions : The GetDrLocations options. +type GetDrLocationsOptions struct { + // instance id of instance to provision. + InstanceID *string `json:"instance_id" validate:"required,ne="` + + // The language requested for the return document. + AcceptLanguage *string `json:"Accept-Language,omitempty"` + + // ETag for conditional requests (optional). + IfNoneMatch *string `json:"If-None-Match,omitempty"` + + // Allows users to set headers on API requests. + Headers map[string]string +} + +// NewGetDrLocationsOptions : Instantiate GetDrLocationsOptions +func (*DrAutomationServiceV1) NewGetDrLocationsOptions(instanceID string) *GetDrLocationsOptions { + return &GetDrLocationsOptions{ + InstanceID: core.StringPtr(instanceID), + } +} + +// SetInstanceID : Allow user to set InstanceID +func (_options *GetDrLocationsOptions) SetInstanceID(instanceID string) *GetDrLocationsOptions { + _options.InstanceID = core.StringPtr(instanceID) + return _options +} + +// SetAcceptLanguage : Allow user to set AcceptLanguage +func (_options *GetDrLocationsOptions) SetAcceptLanguage(acceptLanguage string) *GetDrLocationsOptions { + _options.AcceptLanguage = core.StringPtr(acceptLanguage) + return _options +} + +// SetIfNoneMatch : Allow user to set IfNoneMatch +func (_options *GetDrLocationsOptions) SetIfNoneMatch(ifNoneMatch string) *GetDrLocationsOptions { + _options.IfNoneMatch = core.StringPtr(ifNoneMatch) + return _options +} + +// SetHeaders : Allow user to set Headers +func (options *GetDrLocationsOptions) SetHeaders(param map[string]string) *GetDrLocationsOptions { + options.Headers = param + return options +} + +// GetDrLocationsResponse : Response object containing a list of disaster recovery locations. +type GetDrLocationsResponse struct { + // List of disaster recovery locations available for the service. + DrLocations []DrLocation `json:"dr_locations" validate:"required"` +} + +// UnmarshalGetDrLocationsResponse unmarshals an instance of GetDrLocationsResponse from the specified map of raw messages. +func UnmarshalGetDrLocationsResponse(m map[string]json.RawMessage, result interface{}) (err error) { + obj := new(GetDrLocationsResponse) + err = core.UnmarshalModel(m, "dr_locations", &obj.DrLocations, UnmarshalDrLocation) + if err != nil { + err = core.SDKErrorf(err, "", "dr_locations-error", common.GetComponentInfo()) + return + } + reflect.ValueOf(result).Elem().Set(reflect.ValueOf(obj)) + return +} + +// GetDrManagedVMOptions : The GetDrManagedVM options. +type GetDrManagedVMOptions struct { + // instance id of instance to provision. + InstanceID *string `json:"instance_id" validate:"required,ne="` + + // The language requested for the return document. + AcceptLanguage *string `json:"Accept-Language,omitempty"` + + // ETag for conditional requests (optional). + IfNoneMatch *string `json:"If-None-Match,omitempty"` + + // Allows users to set headers on API requests. + Headers map[string]string +} + +// NewGetDrManagedVMOptions : Instantiate GetDrManagedVMOptions +func (*DrAutomationServiceV1) NewGetDrManagedVMOptions(instanceID string) *GetDrManagedVMOptions { + return &GetDrManagedVMOptions{ + InstanceID: core.StringPtr(instanceID), + } +} + +// SetInstanceID : Allow user to set InstanceID +func (_options *GetDrManagedVMOptions) SetInstanceID(instanceID string) *GetDrManagedVMOptions { + _options.InstanceID = core.StringPtr(instanceID) + return _options +} + +// SetAcceptLanguage : Allow user to set AcceptLanguage +func (_options *GetDrManagedVMOptions) SetAcceptLanguage(acceptLanguage string) *GetDrManagedVMOptions { + _options.AcceptLanguage = core.StringPtr(acceptLanguage) + return _options +} + +// SetIfNoneMatch : Allow user to set IfNoneMatch +func (_options *GetDrManagedVMOptions) SetIfNoneMatch(ifNoneMatch string) *GetDrManagedVMOptions { + _options.IfNoneMatch = core.StringPtr(ifNoneMatch) + return _options +} + +// SetHeaders : Allow user to set Headers +func (options *GetDrManagedVMOptions) SetHeaders(param map[string]string) *GetDrManagedVMOptions { + options.Headers = param + return options +} + +// GetDrSummaryOptions : The GetDrSummary options. +type GetDrSummaryOptions struct { + // instance id of instance to provision. + InstanceID *string `json:"instance_id" validate:"required,ne="` + + // The language requested for the return document. + AcceptLanguage *string `json:"Accept-Language,omitempty"` + + // ETag for conditional requests (optional). + IfNoneMatch *string `json:"If-None-Match,omitempty"` + + // Allows users to set headers on API requests. + Headers map[string]string +} + +// NewGetDrSummaryOptions : Instantiate GetDrSummaryOptions +func (*DrAutomationServiceV1) NewGetDrSummaryOptions(instanceID string) *GetDrSummaryOptions { + return &GetDrSummaryOptions{ + InstanceID: core.StringPtr(instanceID), + } +} + +// SetInstanceID : Allow user to set InstanceID +func (_options *GetDrSummaryOptions) SetInstanceID(instanceID string) *GetDrSummaryOptions { + _options.InstanceID = core.StringPtr(instanceID) + return _options +} + +// SetAcceptLanguage : Allow user to set AcceptLanguage +func (_options *GetDrSummaryOptions) SetAcceptLanguage(acceptLanguage string) *GetDrSummaryOptions { + _options.AcceptLanguage = core.StringPtr(acceptLanguage) + return _options +} + +// SetIfNoneMatch : Allow user to set IfNoneMatch +func (_options *GetDrSummaryOptions) SetIfNoneMatch(ifNoneMatch string) *GetDrSummaryOptions { + _options.IfNoneMatch = core.StringPtr(ifNoneMatch) + return _options +} + +// SetHeaders : Allow user to set Headers +func (options *GetDrSummaryOptions) SetHeaders(param map[string]string) *GetDrSummaryOptions { + options.Headers = param + return options +} + +// GetEventOptions : The GetEvent options. +type GetEventOptions struct { + // instance id of instance to provision. + InstanceID *string `json:"instance_id" validate:"required,ne="` + + // Event ID. + EventID *string `json:"event_id" validate:"required,ne="` + + // The language requested for the return document. + AcceptLanguage *string `json:"Accept-Language,omitempty"` + + // ETag for conditional requests (optional). + IfNoneMatch *string `json:"If-None-Match,omitempty"` + + // Allows users to set headers on API requests. + Headers map[string]string +} + +// NewGetEventOptions : Instantiate GetEventOptions +func (*DrAutomationServiceV1) NewGetEventOptions(instanceID string, eventID string) *GetEventOptions { + return &GetEventOptions{ + InstanceID: core.StringPtr(instanceID), + EventID: core.StringPtr(eventID), + } +} + +// SetInstanceID : Allow user to set InstanceID +func (_options *GetEventOptions) SetInstanceID(instanceID string) *GetEventOptions { + _options.InstanceID = core.StringPtr(instanceID) + return _options +} + +// SetEventID : Allow user to set EventID +func (_options *GetEventOptions) SetEventID(eventID string) *GetEventOptions { + _options.EventID = core.StringPtr(eventID) + return _options +} + +// SetAcceptLanguage : Allow user to set AcceptLanguage +func (_options *GetEventOptions) SetAcceptLanguage(acceptLanguage string) *GetEventOptions { + _options.AcceptLanguage = core.StringPtr(acceptLanguage) + return _options +} + +// SetIfNoneMatch : Allow user to set IfNoneMatch +func (_options *GetEventOptions) SetIfNoneMatch(ifNoneMatch string) *GetEventOptions { + _options.IfNoneMatch = core.StringPtr(ifNoneMatch) + return _options +} + +// SetHeaders : Allow user to set Headers +func (options *GetEventOptions) SetHeaders(param map[string]string) *GetEventOptions { + options.Headers = param + return options +} + +// GetGrsLocationPairResponse : Response body containing GRS location pairs. +type GetGrsLocationPairResponse struct { + // A map of GRS location pairs where each key is a primary location and the value is its paired location. + LocationPairs map[string]string `json:"location_pairs,omitempty"` +} + +// UnmarshalGetGrsLocationPairResponse unmarshals an instance of GetGrsLocationPairResponse from the specified map of raw messages. +func UnmarshalGetGrsLocationPairResponse(m map[string]json.RawMessage, result interface{}) (err error) { + obj := new(GetGrsLocationPairResponse) + err = core.UnmarshalPrimitive(m, "location_pairs", &obj.LocationPairs) + if err != nil { + err = core.SDKErrorf(err, "", "location_pairs-error", common.GetComponentInfo()) + return + } + reflect.ValueOf(result).Elem().Set(reflect.ValueOf(obj)) + return +} + +// GetLastOperationOptions : The GetLastOperation options. +type GetLastOperationOptions struct { + // instance id of instance to provision. + InstanceID *string `json:"instance_id" validate:"required,ne="` + + // The language requested for the return document. + AcceptLanguage *string `json:"Accept-Language,omitempty"` + + // ETag for conditional requests (optional). + IfNoneMatch *string `json:"If-None-Match,omitempty"` + + // Allows users to set headers on API requests. + Headers map[string]string +} + +// NewGetLastOperationOptions : Instantiate GetLastOperationOptions +func (*DrAutomationServiceV1) NewGetLastOperationOptions(instanceID string) *GetLastOperationOptions { + return &GetLastOperationOptions{ + InstanceID: core.StringPtr(instanceID), + } +} + +// SetInstanceID : Allow user to set InstanceID +func (_options *GetLastOperationOptions) SetInstanceID(instanceID string) *GetLastOperationOptions { + _options.InstanceID = core.StringPtr(instanceID) + return _options +} + +// SetAcceptLanguage : Allow user to set AcceptLanguage +func (_options *GetLastOperationOptions) SetAcceptLanguage(acceptLanguage string) *GetLastOperationOptions { + _options.AcceptLanguage = core.StringPtr(acceptLanguage) + return _options +} + +// SetIfNoneMatch : Allow user to set IfNoneMatch +func (_options *GetLastOperationOptions) SetIfNoneMatch(ifNoneMatch string) *GetLastOperationOptions { + _options.IfNoneMatch = core.StringPtr(ifNoneMatch) + return _options +} + +// SetHeaders : Allow user to set Headers +func (options *GetLastOperationOptions) SetHeaders(param map[string]string) *GetLastOperationOptions { + options.Headers = param + return options +} + +// GetMachineTypeOptions : The GetMachineType options. +type GetMachineTypeOptions struct { + // instance id of instance to provision. + InstanceID *string `json:"instance_id" validate:"required,ne="` + + // The primary Power virtual server workspace name. + PrimaryWorkspaceName *string `json:"primary_workspace_name" validate:"required"` + + // The language requested for the return document. + AcceptLanguage *string `json:"Accept-Language,omitempty"` + + // ETag for conditional requests (optional). + IfNoneMatch *string `json:"If-None-Match,omitempty"` + + // The standby Power virtual server workspace name. + StandbyWorkspaceName *string `json:"standby_workspace_name,omitempty"` + + // Allows users to set headers on API requests. + Headers map[string]string +} + +// NewGetMachineTypeOptions : Instantiate GetMachineTypeOptions +func (*DrAutomationServiceV1) NewGetMachineTypeOptions(instanceID string, primaryWorkspaceName string) *GetMachineTypeOptions { + return &GetMachineTypeOptions{ + InstanceID: core.StringPtr(instanceID), + PrimaryWorkspaceName: core.StringPtr(primaryWorkspaceName), + } +} + +// SetInstanceID : Allow user to set InstanceID +func (_options *GetMachineTypeOptions) SetInstanceID(instanceID string) *GetMachineTypeOptions { + _options.InstanceID = core.StringPtr(instanceID) + return _options +} + +// SetPrimaryWorkspaceName : Allow user to set PrimaryWorkspaceName +func (_options *GetMachineTypeOptions) SetPrimaryWorkspaceName(primaryWorkspaceName string) *GetMachineTypeOptions { + _options.PrimaryWorkspaceName = core.StringPtr(primaryWorkspaceName) + return _options +} + +// SetAcceptLanguage : Allow user to set AcceptLanguage +func (_options *GetMachineTypeOptions) SetAcceptLanguage(acceptLanguage string) *GetMachineTypeOptions { + _options.AcceptLanguage = core.StringPtr(acceptLanguage) + return _options +} + +// SetIfNoneMatch : Allow user to set IfNoneMatch +func (_options *GetMachineTypeOptions) SetIfNoneMatch(ifNoneMatch string) *GetMachineTypeOptions { + _options.IfNoneMatch = core.StringPtr(ifNoneMatch) + return _options +} + +// SetStandbyWorkspaceName : Allow user to set StandbyWorkspaceName +func (_options *GetMachineTypeOptions) SetStandbyWorkspaceName(standbyWorkspaceName string) *GetMachineTypeOptions { + _options.StandbyWorkspaceName = core.StringPtr(standbyWorkspaceName) + return _options +} + +// SetHeaders : Allow user to set Headers +func (options *GetMachineTypeOptions) SetHeaders(param map[string]string) *GetMachineTypeOptions { + options.Headers = param + return options +} + +// GetManageDrOptions : The GetManageDr options. +type GetManageDrOptions struct { + // instance id of instance to provision. + InstanceID *string `json:"instance_id" validate:"required,ne="` + + // The language requested for the return document. + AcceptLanguage *string `json:"Accept-Language,omitempty"` + + // ETag for conditional requests (optional). + IfNoneMatch *string `json:"If-None-Match,omitempty"` + + // Allows users to set headers on API requests. + Headers map[string]string +} + +// NewGetManageDrOptions : Instantiate GetManageDrOptions +func (*DrAutomationServiceV1) NewGetManageDrOptions(instanceID string) *GetManageDrOptions { + return &GetManageDrOptions{ + InstanceID: core.StringPtr(instanceID), + } +} + +// SetInstanceID : Allow user to set InstanceID +func (_options *GetManageDrOptions) SetInstanceID(instanceID string) *GetManageDrOptions { + _options.InstanceID = core.StringPtr(instanceID) + return _options +} + +// SetAcceptLanguage : Allow user to set AcceptLanguage +func (_options *GetManageDrOptions) SetAcceptLanguage(acceptLanguage string) *GetManageDrOptions { + _options.AcceptLanguage = core.StringPtr(acceptLanguage) + return _options +} + +// SetIfNoneMatch : Allow user to set IfNoneMatch +func (_options *GetManageDrOptions) SetIfNoneMatch(ifNoneMatch string) *GetManageDrOptions { + _options.IfNoneMatch = core.StringPtr(ifNoneMatch) + return _options +} + +// SetHeaders : Allow user to set Headers +func (options *GetManageDrOptions) SetHeaders(param map[string]string) *GetManageDrOptions { + options.Headers = param + return options +} + +// GetPowervsWorkspacesOptions : The GetPowervsWorkspaces options. +type GetPowervsWorkspacesOptions struct { + // instance id of instance to provision. + InstanceID *string `json:"instance_id" validate:"required,ne="` + + // Location ID value. + LocationID *string `json:"location_id" validate:"required"` + + // ETag for conditional requests (optional). + IfNoneMatch *string `json:"If-None-Match,omitempty"` + + // Allows users to set headers on API requests. + Headers map[string]string +} + +// NewGetPowervsWorkspacesOptions : Instantiate GetPowervsWorkspacesOptions +func (*DrAutomationServiceV1) NewGetPowervsWorkspacesOptions(instanceID string, locationID string) *GetPowervsWorkspacesOptions { + return &GetPowervsWorkspacesOptions{ + InstanceID: core.StringPtr(instanceID), + LocationID: core.StringPtr(locationID), + } +} + +// SetInstanceID : Allow user to set InstanceID +func (_options *GetPowervsWorkspacesOptions) SetInstanceID(instanceID string) *GetPowervsWorkspacesOptions { + _options.InstanceID = core.StringPtr(instanceID) + return _options +} + +// SetLocationID : Allow user to set LocationID +func (_options *GetPowervsWorkspacesOptions) SetLocationID(locationID string) *GetPowervsWorkspacesOptions { + _options.LocationID = core.StringPtr(locationID) + return _options +} + +// SetIfNoneMatch : Allow user to set IfNoneMatch +func (_options *GetPowervsWorkspacesOptions) SetIfNoneMatch(ifNoneMatch string) *GetPowervsWorkspacesOptions { + _options.IfNoneMatch = core.StringPtr(ifNoneMatch) + return _options +} + +// SetHeaders : Allow user to set Headers +func (options *GetPowervsWorkspacesOptions) SetHeaders(param map[string]string) *GetPowervsWorkspacesOptions { + options.Headers = param + return options +} + +// ListEventsOptions : The ListEvents options. +type ListEventsOptions struct { + // instance id of instance to provision. + InstanceID *string `json:"instance_id" validate:"required,ne="` + + // (deprecated - use from_time) A time in either ISO 8601 or unix epoch format. + Time *string `json:"time,omitempty"` + + // A from query time in either ISO 8601 or unix epoch format. + FromTime *string `json:"from_time,omitempty"` + + // A to query time in either ISO 8601 or unix epoch format. + ToTime *string `json:"to_time,omitempty"` + + // The language requested for the return document. + AcceptLanguage *string `json:"Accept-Language,omitempty"` + + // ETag for conditional requests (optional). + IfNoneMatch *string `json:"If-None-Match,omitempty"` + + // Allows users to set headers on API requests. + Headers map[string]string +} + +// NewListEventsOptions : Instantiate ListEventsOptions +func (*DrAutomationServiceV1) NewListEventsOptions(instanceID string) *ListEventsOptions { + return &ListEventsOptions{ + InstanceID: core.StringPtr(instanceID), + } +} + +// SetInstanceID : Allow user to set InstanceID +func (_options *ListEventsOptions) SetInstanceID(instanceID string) *ListEventsOptions { + _options.InstanceID = core.StringPtr(instanceID) + return _options +} + +// SetTime : Allow user to set Time +func (_options *ListEventsOptions) SetTime(time string) *ListEventsOptions { + _options.Time = core.StringPtr(time) + return _options +} + +// SetFromTime : Allow user to set FromTime +func (_options *ListEventsOptions) SetFromTime(fromTime string) *ListEventsOptions { + _options.FromTime = core.StringPtr(fromTime) + return _options +} + +// SetToTime : Allow user to set ToTime +func (_options *ListEventsOptions) SetToTime(toTime string) *ListEventsOptions { + _options.ToTime = core.StringPtr(toTime) + return _options +} + +// SetAcceptLanguage : Allow user to set AcceptLanguage +func (_options *ListEventsOptions) SetAcceptLanguage(acceptLanguage string) *ListEventsOptions { + _options.AcceptLanguage = core.StringPtr(acceptLanguage) + return _options +} + +// SetIfNoneMatch : Allow user to set IfNoneMatch +func (_options *ListEventsOptions) SetIfNoneMatch(ifNoneMatch string) *ListEventsOptions { + _options.IfNoneMatch = core.StringPtr(ifNoneMatch) + return _options +} + +// SetHeaders : Allow user to set Headers +func (options *ListEventsOptions) SetHeaders(param map[string]string) *ListEventsOptions { + options.Headers = param + return options +} + +// LocationDr : Represents a disaster recovery location. +type LocationDr struct { + // The region identifier of the DR location. + Region *string `json:"region,omitempty"` + + // The type of location (e.g., data-center, cloud-region). + Type *string `json:"type,omitempty"` + + // The URL endpoint to access the DR location. + URL *string `json:"url,omitempty"` +} + +// UnmarshalLocationDr unmarshals an instance of LocationDr from the specified map of raw messages. +func UnmarshalLocationDr(m map[string]json.RawMessage, result interface{}) (err error) { + obj := new(LocationDr) + err = core.UnmarshalPrimitive(m, "region", &obj.Region) + if err != nil { + err = core.SDKErrorf(err, "", "region-error", common.GetComponentInfo()) + return + } + err = core.UnmarshalPrimitive(m, "type", &obj.Type) + if err != nil { + err = core.SDKErrorf(err, "", "type-error", common.GetComponentInfo()) + return + } + err = core.UnmarshalPrimitive(m, "url", &obj.URL) + if err != nil { + err = core.SDKErrorf(err, "", "url-error", common.GetComponentInfo()) + return + } + reflect.ValueOf(result).Elem().Set(reflect.ValueOf(obj)) + return +} + +// MachineTypesByWorkspace : The Response body containing machine types supported by power virtual server workspace. +type MachineTypesByWorkspace struct { + // The Map of workspace IDs to lists of machine types. + Workspaces map[string][]string `json:"workspaces,omitempty"` +} + +// UnmarshalMachineTypesByWorkspace unmarshals an instance of MachineTypesByWorkspace from the specified map of raw messages. +func UnmarshalMachineTypesByWorkspace(m map[string]json.RawMessage, result interface{}) (err error) { + obj := new(MachineTypesByWorkspace) + err = core.UnmarshalPrimitive(m, "workspaces", &obj.Workspaces) + if err != nil { + err = core.SDKErrorf(err, "", "workspaces-error", common.GetComponentInfo()) + return + } + reflect.ValueOf(result).Elem().Set(reflect.ValueOf(obj)) + return +} + +// ManagedVMDetails : The detailed information of a disaster recovery enabled virtual machines for the service. +type ManagedVMDetails struct { + // The Number of cores assigned to the managed vitual machine. + Core *string `json:"core,omitempty"` + + // The DR operation average time(in minutes) for the managed virtual machine. + DrAverageTime *string `json:"dr_average_time,omitempty"` + + // The name of the region where the virtual machine is recovered. + DrRegion *string `json:"dr_region,omitempty"` + + // The amount of memory (in GB) assigned to the managed virtual machine. + Memory *string `json:"memory,omitempty"` + + // The source region where the managed virtual machine is deployed. + Region *string `json:"region,omitempty"` + + // The name of the managed virtual machine. + VMName *string `json:"vm_name,omitempty"` + + // The name of the workgroup where the managed virtual machine is added for disaster recovery. + WorkgroupName *string `json:"workgroup_name,omitempty"` + + // The Name of the power virtual server workspace. + WorkspaceName *string `json:"workspace_name,omitempty"` +} + +// UnmarshalManagedVMDetails unmarshals an instance of ManagedVMDetails from the specified map of raw messages. +func UnmarshalManagedVMDetails(m map[string]json.RawMessage, result interface{}) (err error) { + obj := new(ManagedVMDetails) + err = core.UnmarshalPrimitive(m, "core", &obj.Core) + if err != nil { + err = core.SDKErrorf(err, "", "core-error", common.GetComponentInfo()) + return + } + err = core.UnmarshalPrimitive(m, "dr_average_time", &obj.DrAverageTime) + if err != nil { + err = core.SDKErrorf(err, "", "dr_average_time-error", common.GetComponentInfo()) + return + } + err = core.UnmarshalPrimitive(m, "dr_region", &obj.DrRegion) + if err != nil { + err = core.SDKErrorf(err, "", "dr_region-error", common.GetComponentInfo()) + return + } + err = core.UnmarshalPrimitive(m, "memory", &obj.Memory) + if err != nil { + err = core.SDKErrorf(err, "", "memory-error", common.GetComponentInfo()) + return + } + err = core.UnmarshalPrimitive(m, "region", &obj.Region) + if err != nil { + err = core.SDKErrorf(err, "", "region-error", common.GetComponentInfo()) + return + } + err = core.UnmarshalPrimitive(m, "vm_name", &obj.VMName) + if err != nil { + err = core.SDKErrorf(err, "", "vm_name-error", common.GetComponentInfo()) + return + } + err = core.UnmarshalPrimitive(m, "workgroup_name", &obj.WorkgroupName) + if err != nil { + err = core.SDKErrorf(err, "", "workgroup_name-error", common.GetComponentInfo()) + return + } + err = core.UnmarshalPrimitive(m, "workspace_name", &obj.WorkspaceName) + if err != nil { + err = core.SDKErrorf(err, "", "workspace_name-error", common.GetComponentInfo()) + return + } + reflect.ValueOf(result).Elem().Set(reflect.ValueOf(obj)) + return +} + +// ManagedVMMapResponse : Map of VM IDs to managed VM details. +type ManagedVMMapResponse struct { + // A map where the key is the VM ID and the value is the corresponding ManagedVmDetails object. + ManagedVMList map[string]ManagedVMDetails `json:"managed_vm_list,omitempty"` +} + +// UnmarshalManagedVMMapResponse unmarshals an instance of ManagedVMMapResponse from the specified map of raw messages. +func UnmarshalManagedVMMapResponse(m map[string]json.RawMessage, result interface{}) (err error) { + obj := new(ManagedVMMapResponse) + err = core.UnmarshalModel(m, "managed_vm_list", &obj.ManagedVMList, UnmarshalManagedVMDetails) + if err != nil { + err = core.SDKErrorf(err, "", "managed_vm_list-error", common.GetComponentInfo()) + return + } + reflect.ValueOf(result).Elem().Set(reflect.ValueOf(obj)) + return +} + +// OrchestratorDetails : Contains details about the orchestrator configuration. +type OrchestratorDetails struct { + // The deployment time of primary orchestrator VM. + LastUpdatedOrchestratorDeploymentTime *strfmt.DateTime `json:"last_updated_orchestrator_deployment_time" validate:"required"` + + // The deployment time of StandBy orchestrator VM. + LastUpdatedStandbyOrchestratorDeploymentTime *strfmt.DateTime `json:"last_updated_standby_orchestrator_deployment_time" validate:"required"` + + // Latest Orchestrator Time in COS. + LatestOrchestratorTime *strfmt.DateTime `json:"latest_orchestrator_time,omitempty"` + + // The unique identifier of location. + LocationID *string `json:"location_id" validate:"required"` + + // indicates if Multi Factor Authentication is enabled or not. + MfaEnabled *string `json:"mfa_enabled" validate:"required"` + + // The external connectivity status of the orchestrator. + OrchExtConnectivityStatus *string `json:"orch_ext_connectivity_status" validate:"required"` + + // The status of standby node addition. + OrchStandbyNodeAdditionStatus *string `json:"orch_standby_node_addition_status" validate:"required"` + + // The message regarding orchestrator cluster status. + OrchestratorClusterMessage *string `json:"orchestrator_cluster_message" validate:"required"` + + // The configuration status of the orchestrator. + OrchestratorConfigStatus *string `json:"orchestrator_config_status" validate:"required"` + + // The leader node of the orchestrator group. + OrchestratorGroupLeader *string `json:"orchestrator_group_leader" validate:"required"` + + // The type of orchestrator Location. + OrchestratorLocationType *string `json:"orchestrator_location_type" validate:"required"` + + // The name of the primary orchestrator. + OrchestratorName *string `json:"orchestrator_name" validate:"required"` + + // The status of the primary orchestrator. + OrchestratorStatus *string `json:"orchestrator_status" validate:"required"` + + // The name of the orchestrator workspace. + OrchestratorWorkspaceName *string `json:"orchestrator_workspace_name" validate:"required"` + + // The IP address of the proxy. + ProxyIP *string `json:"proxy_ip" validate:"required"` + + // The name of the schematic workspace. + SchematicWorkspaceName *string `json:"schematic_workspace_name" validate:"required"` + + // The status of the schematic workspace. + SchematicWorkspaceStatus *string `json:"schematic_workspace_status" validate:"required"` + + // SSH key name used for the orchestrator. + SSHKeyName *string `json:"ssh_key_name" validate:"required"` + + // The name of the standby orchestrator. + StandbyOrchestratorName *string `json:"standby_orchestrator_name" validate:"required"` + + // The status of the standby orchestrator. + StandbyOrchestratorStatus *string `json:"standby_orchestrator_status" validate:"required"` + + // The name of the standby orchestrator workspace. + StandbyOrchestratorWorkspaceName *string `json:"standby_orchestrator_workspace_name" validate:"required"` + + // The name of the transit gateway. + TransitGatewayName *string `json:"transit_gateway_name" validate:"required"` + + // The name of the VPC. + VPCName *string `json:"vpc_name" validate:"required"` +} + +// UnmarshalOrchestratorDetails unmarshals an instance of OrchestratorDetails from the specified map of raw messages. +func UnmarshalOrchestratorDetails(m map[string]json.RawMessage, result interface{}) (err error) { + obj := new(OrchestratorDetails) + err = core.UnmarshalPrimitive(m, "last_updated_orchestrator_deployment_time", &obj.LastUpdatedOrchestratorDeploymentTime) + if err != nil { + err = core.SDKErrorf(err, "", "last_updated_orchestrator_deployment_time-error", common.GetComponentInfo()) + return + } + err = core.UnmarshalPrimitive(m, "last_updated_standby_orchestrator_deployment_time", &obj.LastUpdatedStandbyOrchestratorDeploymentTime) + if err != nil { + err = core.SDKErrorf(err, "", "last_updated_standby_orchestrator_deployment_time-error", common.GetComponentInfo()) + return + } + err = core.UnmarshalPrimitive(m, "latest_orchestrator_time", &obj.LatestOrchestratorTime) + if err != nil { + err = core.SDKErrorf(err, "", "latest_orchestrator_time-error", common.GetComponentInfo()) + return + } + err = core.UnmarshalPrimitive(m, "location_id", &obj.LocationID) + if err != nil { + err = core.SDKErrorf(err, "", "location_id-error", common.GetComponentInfo()) + return + } + err = core.UnmarshalPrimitive(m, "mfa_enabled", &obj.MfaEnabled) + if err != nil { + err = core.SDKErrorf(err, "", "mfa_enabled-error", common.GetComponentInfo()) + return + } + err = core.UnmarshalPrimitive(m, "orch_ext_connectivity_status", &obj.OrchExtConnectivityStatus) + if err != nil { + err = core.SDKErrorf(err, "", "orch_ext_connectivity_status-error", common.GetComponentInfo()) + return + } + err = core.UnmarshalPrimitive(m, "orch_standby_node_addition_status", &obj.OrchStandbyNodeAdditionStatus) + if err != nil { + err = core.SDKErrorf(err, "", "orch_standby_node_addition_status-error", common.GetComponentInfo()) + return + } + err = core.UnmarshalPrimitive(m, "orchestrator_cluster_message", &obj.OrchestratorClusterMessage) + if err != nil { + err = core.SDKErrorf(err, "", "orchestrator_cluster_message-error", common.GetComponentInfo()) + return + } + err = core.UnmarshalPrimitive(m, "orchestrator_config_status", &obj.OrchestratorConfigStatus) + if err != nil { + err = core.SDKErrorf(err, "", "orchestrator_config_status-error", common.GetComponentInfo()) + return + } + err = core.UnmarshalPrimitive(m, "orchestrator_group_leader", &obj.OrchestratorGroupLeader) + if err != nil { + err = core.SDKErrorf(err, "", "orchestrator_group_leader-error", common.GetComponentInfo()) + return + } + err = core.UnmarshalPrimitive(m, "orchestrator_location_type", &obj.OrchestratorLocationType) + if err != nil { + err = core.SDKErrorf(err, "", "orchestrator_location_type-error", common.GetComponentInfo()) + return + } + err = core.UnmarshalPrimitive(m, "orchestrator_name", &obj.OrchestratorName) + if err != nil { + err = core.SDKErrorf(err, "", "orchestrator_name-error", common.GetComponentInfo()) + return + } + err = core.UnmarshalPrimitive(m, "orchestrator_status", &obj.OrchestratorStatus) + if err != nil { + err = core.SDKErrorf(err, "", "orchestrator_status-error", common.GetComponentInfo()) + return + } + err = core.UnmarshalPrimitive(m, "orchestrator_workspace_name", &obj.OrchestratorWorkspaceName) + if err != nil { + err = core.SDKErrorf(err, "", "orchestrator_workspace_name-error", common.GetComponentInfo()) + return + } + err = core.UnmarshalPrimitive(m, "proxy_ip", &obj.ProxyIP) + if err != nil { + err = core.SDKErrorf(err, "", "proxy_ip-error", common.GetComponentInfo()) + return + } + err = core.UnmarshalPrimitive(m, "schematic_workspace_name", &obj.SchematicWorkspaceName) + if err != nil { + err = core.SDKErrorf(err, "", "schematic_workspace_name-error", common.GetComponentInfo()) + return + } + err = core.UnmarshalPrimitive(m, "schematic_workspace_status", &obj.SchematicWorkspaceStatus) + if err != nil { + err = core.SDKErrorf(err, "", "schematic_workspace_status-error", common.GetComponentInfo()) + return + } + err = core.UnmarshalPrimitive(m, "ssh_key_name", &obj.SSHKeyName) + if err != nil { + err = core.SDKErrorf(err, "", "ssh_key_name-error", common.GetComponentInfo()) + return + } + err = core.UnmarshalPrimitive(m, "standby_orchestrator_name", &obj.StandbyOrchestratorName) + if err != nil { + err = core.SDKErrorf(err, "", "standby_orchestrator_name-error", common.GetComponentInfo()) + return + } + err = core.UnmarshalPrimitive(m, "standby_orchestrator_status", &obj.StandbyOrchestratorStatus) + if err != nil { + err = core.SDKErrorf(err, "", "standby_orchestrator_status-error", common.GetComponentInfo()) + return + } + err = core.UnmarshalPrimitive(m, "standby_orchestrator_workspace_name", &obj.StandbyOrchestratorWorkspaceName) + if err != nil { + err = core.SDKErrorf(err, "", "standby_orchestrator_workspace_name-error", common.GetComponentInfo()) + return + } + err = core.UnmarshalPrimitive(m, "transit_gateway_name", &obj.TransitGatewayName) + if err != nil { + err = core.SDKErrorf(err, "", "transit_gateway_name-error", common.GetComponentInfo()) + return + } + err = core.UnmarshalPrimitive(m, "vpc_name", &obj.VPCName) + if err != nil { + err = core.SDKErrorf(err, "", "vpc_name-error", common.GetComponentInfo()) + return + } + reflect.ValueOf(result).Elem().Set(reflect.ValueOf(obj)) + return +} + +// ServiceDetails : Contains details about the DR automation service. +type ServiceDetails struct { + // The deployment crn. + CRN *string `json:"crn" validate:"required"` + + // The name of the deployment. + DeploymentName *string `json:"deployment_name" validate:"required"` + + // The Service description. + Description *string `json:"description" validate:"required"` + + // The flag indicating whether orchestartor HA is enabled. + OrchestratorHa *bool `json:"orchestrator_ha" validate:"required"` + + // The plan name. + PlanName *string `json:"plan_name" validate:"required"` + + // The service Orchestator primary IP address. + PrimaryIPAddress *string `json:"primary_ip_address" validate:"required"` + + // The Primary Orchestrator Dashboard URL. + PrimaryOrchestratorDashboardURL *string `json:"primary_orchestrator_dashboard_url" validate:"required"` + + // The disaster recovery location. + RecoveryLocation *string `json:"recovery_location" validate:"required"` + + // The Resource group name. + ResourceGroup *string `json:"resource_group" validate:"required"` + + // The standby orchestrator current status details. + StandbyDescription *string `json:"standby_description" validate:"required"` + + // The service Orchestator standby IP address. + StandbyIPAddress *string `json:"standby_ip_address" validate:"required"` + + // The Standby Orchestrator Dashboard URL. + StandbyOrchestratorDashboardURL *string `json:"standby_orchestrator_dashboard_url" validate:"required"` + + // The standby orchestrator current status. + StandbyStatus *string `json:"standby_status" validate:"required"` + + // The Status of the service. + Status *string `json:"status" validate:"required"` +} + +// UnmarshalServiceDetails unmarshals an instance of ServiceDetails from the specified map of raw messages. +func UnmarshalServiceDetails(m map[string]json.RawMessage, result interface{}) (err error) { + obj := new(ServiceDetails) + err = core.UnmarshalPrimitive(m, "crn", &obj.CRN) + if err != nil { + err = core.SDKErrorf(err, "", "crn-error", common.GetComponentInfo()) + return + } + err = core.UnmarshalPrimitive(m, "deployment_name", &obj.DeploymentName) + if err != nil { + err = core.SDKErrorf(err, "", "deployment_name-error", common.GetComponentInfo()) + return + } + err = core.UnmarshalPrimitive(m, "description", &obj.Description) + if err != nil { + err = core.SDKErrorf(err, "", "description-error", common.GetComponentInfo()) + return + } + err = core.UnmarshalPrimitive(m, "orchestrator_ha", &obj.OrchestratorHa) + if err != nil { + err = core.SDKErrorf(err, "", "orchestrator_ha-error", common.GetComponentInfo()) + return + } + err = core.UnmarshalPrimitive(m, "plan_name", &obj.PlanName) + if err != nil { + err = core.SDKErrorf(err, "", "plan_name-error", common.GetComponentInfo()) + return + } + err = core.UnmarshalPrimitive(m, "primary_ip_address", &obj.PrimaryIPAddress) + if err != nil { + err = core.SDKErrorf(err, "", "primary_ip_address-error", common.GetComponentInfo()) + return + } + err = core.UnmarshalPrimitive(m, "primary_orchestrator_dashboard_url", &obj.PrimaryOrchestratorDashboardURL) + if err != nil { + err = core.SDKErrorf(err, "", "primary_orchestrator_dashboard_url-error", common.GetComponentInfo()) + return + } + err = core.UnmarshalPrimitive(m, "recovery_location", &obj.RecoveryLocation) + if err != nil { + err = core.SDKErrorf(err, "", "recovery_location-error", common.GetComponentInfo()) + return + } + err = core.UnmarshalPrimitive(m, "resource_group", &obj.ResourceGroup) + if err != nil { + err = core.SDKErrorf(err, "", "resource_group-error", common.GetComponentInfo()) + return + } + err = core.UnmarshalPrimitive(m, "standby_description", &obj.StandbyDescription) + if err != nil { + err = core.SDKErrorf(err, "", "standby_description-error", common.GetComponentInfo()) + return + } + err = core.UnmarshalPrimitive(m, "standby_ip_address", &obj.StandbyIPAddress) + if err != nil { + err = core.SDKErrorf(err, "", "standby_ip_address-error", common.GetComponentInfo()) + return + } + err = core.UnmarshalPrimitive(m, "standby_orchestrator_dashboard_url", &obj.StandbyOrchestratorDashboardURL) + if err != nil { + err = core.SDKErrorf(err, "", "standby_orchestrator_dashboard_url-error", common.GetComponentInfo()) + return + } + err = core.UnmarshalPrimitive(m, "standby_status", &obj.StandbyStatus) + if err != nil { + err = core.SDKErrorf(err, "", "standby_status-error", common.GetComponentInfo()) + return + } + err = core.UnmarshalPrimitive(m, "status", &obj.Status) + if err != nil { + err = core.SDKErrorf(err, "", "status-error", common.GetComponentInfo()) + return + } + reflect.ValueOf(result).Elem().Set(reflect.ValueOf(obj)) + return +} + +// ServiceInstanceManageDr : Represents the response details for managing a DR service instance. +type ServiceInstanceManageDr struct { + // URL to the dashboard for managing the DR service instance in IBM Cloud. + DashboardURL *string `json:"dashboard_url,omitempty"` + + // The CRN (Cloud Resource Name) of the DR service instance. + ID *string `json:"id,omitempty"` +} + +// UnmarshalServiceInstanceManageDr unmarshals an instance of ServiceInstanceManageDr from the specified map of raw messages. +func UnmarshalServiceInstanceManageDr(m map[string]json.RawMessage, result interface{}) (err error) { + obj := new(ServiceInstanceManageDr) + err = core.UnmarshalPrimitive(m, "dashboard_url", &obj.DashboardURL) + if err != nil { + err = core.SDKErrorf(err, "", "dashboard_url-error", common.GetComponentInfo()) + return + } + err = core.UnmarshalPrimitive(m, "id", &obj.ID) + if err != nil { + err = core.SDKErrorf(err, "", "id-error", common.GetComponentInfo()) + return + } + reflect.ValueOf(result).Elem().Set(reflect.ValueOf(obj)) + return +} + +// ServiceInstanceStatus : Represents the current status and details of a service instance including orchestrator state, networking, and +// recovery information. +type ServiceInstanceStatus struct { + // The service instance crn. + CRN *string `json:"crn" validate:"required"` + + // The name of the service instance deployment. + DeploymentName *string `json:"deployment_name" validate:"required"` + + // The deployment time of primary orchestrator VM. + LastUpdatedOrchestratorDeploymentTime *strfmt.DateTime `json:"last_updated_orchestrator_deployment_time" validate:"required"` + + // The deployment time of StandBy orchestrator VM. + LastUpdatedStandbyOrchestratorDeploymentTime *strfmt.DateTime `json:"last_updated_standby_orchestrator_deployment_time" validate:"required"` + + // Indicated whether multi factor authentication is ennabled or not. + MfaEnabled *string `json:"mfa_enabled" validate:"required"` + + // Status of standby node addition to the orchestrator cluster. + OrchExtConnectivityStatus *string `json:"orch_ext_connectivity_status,omitempty"` + + // The status of standby node in the Orchestrator cluster. + OrchStandbyNodeAddtionStatus *string `json:"orch_standby_node_addtion_status" validate:"required"` + + // The current status of the primary orchestrator VM. + OrchestratorClusterMessage *string `json:"orchestrator_cluster_message" validate:"required"` + + // The configuration status of the orchestrator cluster. + OrchestratorConfigStatus *string `json:"orchestrator_config_status" validate:"required"` + + // Indicates whether high availability (HA) is enabled for the orchestrator. + OrchestratorHa *bool `json:"orchestrator_ha" validate:"required"` + + // The name of the DR Automation plan. + PlanName *string `json:"plan_name" validate:"required"` + + // Indicates the progress details of primary orchestrator creation. + PrimaryDescription *string `json:"primary_description" validate:"required"` + + // The IP address of the primary orchestrator VM. + PrimaryIPAddress *string `json:"primary_ip_address" validate:"required"` + + // The configuration status of the orchestrator cluster. + PrimaryOrchestratorStatus *string `json:"primary_orchestrator_status" validate:"required"` + + // The disaster recovery location associated with the instance. + RecoveryLocation *string `json:"recovery_location" validate:"required"` + + // The resource group to which the service instance belongs. + ResourceGroup *string `json:"resource_group" validate:"required"` + + // Indicates the progress details of primary orchestrator creation. + StandbyDescription *string `json:"standby_description" validate:"required"` + + // The IP address of the standby orchestrator VM. + StandbyIPAddress *string `json:"standby_ip_address" validate:"required"` + + // The current state of the standby orchestrator. + StandbyStatus *string `json:"standby_status" validate:"required"` + + // The current state of the primary orchestrator. + Status *string `json:"status" validate:"required"` +} + +// UnmarshalServiceInstanceStatus unmarshals an instance of ServiceInstanceStatus from the specified map of raw messages. +func UnmarshalServiceInstanceStatus(m map[string]json.RawMessage, result interface{}) (err error) { + obj := new(ServiceInstanceStatus) + err = core.UnmarshalPrimitive(m, "crn", &obj.CRN) + if err != nil { + err = core.SDKErrorf(err, "", "crn-error", common.GetComponentInfo()) + return + } + err = core.UnmarshalPrimitive(m, "deployment_name", &obj.DeploymentName) + if err != nil { + err = core.SDKErrorf(err, "", "deployment_name-error", common.GetComponentInfo()) + return + } + err = core.UnmarshalPrimitive(m, "last_updated_orchestrator_deployment_time", &obj.LastUpdatedOrchestratorDeploymentTime) + if err != nil { + err = core.SDKErrorf(err, "", "last_updated_orchestrator_deployment_time-error", common.GetComponentInfo()) + return + } + err = core.UnmarshalPrimitive(m, "last_updated_standby_orchestrator_deployment_time", &obj.LastUpdatedStandbyOrchestratorDeploymentTime) + if err != nil { + err = core.SDKErrorf(err, "", "last_updated_standby_orchestrator_deployment_time-error", common.GetComponentInfo()) + return + } + err = core.UnmarshalPrimitive(m, "mfa_enabled", &obj.MfaEnabled) + if err != nil { + err = core.SDKErrorf(err, "", "mfa_enabled-error", common.GetComponentInfo()) + return + } + err = core.UnmarshalPrimitive(m, "orch_ext_connectivity_status", &obj.OrchExtConnectivityStatus) + if err != nil { + err = core.SDKErrorf(err, "", "orch_ext_connectivity_status-error", common.GetComponentInfo()) + return + } + err = core.UnmarshalPrimitive(m, "orch_standby_node_addtion_status", &obj.OrchStandbyNodeAddtionStatus) + if err != nil { + err = core.SDKErrorf(err, "", "orch_standby_node_addtion_status-error", common.GetComponentInfo()) + return + } + err = core.UnmarshalPrimitive(m, "orchestrator_cluster_message", &obj.OrchestratorClusterMessage) + if err != nil { + err = core.SDKErrorf(err, "", "orchestrator_cluster_message-error", common.GetComponentInfo()) + return + } + err = core.UnmarshalPrimitive(m, "orchestrator_config_status", &obj.OrchestratorConfigStatus) + if err != nil { + err = core.SDKErrorf(err, "", "orchestrator_config_status-error", common.GetComponentInfo()) + return + } + err = core.UnmarshalPrimitive(m, "orchestrator_ha", &obj.OrchestratorHa) + if err != nil { + err = core.SDKErrorf(err, "", "orchestrator_ha-error", common.GetComponentInfo()) + return + } + err = core.UnmarshalPrimitive(m, "plan_name", &obj.PlanName) + if err != nil { + err = core.SDKErrorf(err, "", "plan_name-error", common.GetComponentInfo()) + return + } + err = core.UnmarshalPrimitive(m, "primary_description", &obj.PrimaryDescription) + if err != nil { + err = core.SDKErrorf(err, "", "primary_description-error", common.GetComponentInfo()) + return + } + err = core.UnmarshalPrimitive(m, "primary_ip_address", &obj.PrimaryIPAddress) + if err != nil { + err = core.SDKErrorf(err, "", "primary_ip_address-error", common.GetComponentInfo()) + return + } + err = core.UnmarshalPrimitive(m, "primary_orchestrator_status", &obj.PrimaryOrchestratorStatus) + if err != nil { + err = core.SDKErrorf(err, "", "primary_orchestrator_status-error", common.GetComponentInfo()) + return + } + err = core.UnmarshalPrimitive(m, "recovery_location", &obj.RecoveryLocation) + if err != nil { + err = core.SDKErrorf(err, "", "recovery_location-error", common.GetComponentInfo()) + return + } + err = core.UnmarshalPrimitive(m, "resource_group", &obj.ResourceGroup) + if err != nil { + err = core.SDKErrorf(err, "", "resource_group-error", common.GetComponentInfo()) + return + } + err = core.UnmarshalPrimitive(m, "standby_description", &obj.StandbyDescription) + if err != nil { + err = core.SDKErrorf(err, "", "standby_description-error", common.GetComponentInfo()) + return + } + err = core.UnmarshalPrimitive(m, "standby_ip_address", &obj.StandbyIPAddress) + if err != nil { + err = core.SDKErrorf(err, "", "standby_ip_address-error", common.GetComponentInfo()) + return + } + err = core.UnmarshalPrimitive(m, "standby_status", &obj.StandbyStatus) + if err != nil { + err = core.SDKErrorf(err, "", "standby_status-error", common.GetComponentInfo()) + return + } + err = core.UnmarshalPrimitive(m, "status", &obj.Status) + if err != nil { + err = core.SDKErrorf(err, "", "status-error", common.GetComponentInfo()) + return + } + reflect.ValueOf(result).Elem().Set(reflect.ValueOf(obj)) + return +} + +// UpdateApikeyOptions : The UpdateApikey options. +type UpdateApikeyOptions struct { + // instance id of instance to provision. + InstanceID *string `json:"instance_id" validate:"required,ne="` + + // The new API key value that will replace the existing one. + APIKey *string `json:"api_key" validate:"required"` + + // The language requested for the return document. + AcceptLanguage *string `json:"Accept-Language,omitempty"` + + // ETag for conditional requests (optional). + IfNoneMatch *string `json:"If-None-Match,omitempty"` + + // Allows users to set headers on API requests. + Headers map[string]string +} + +// NewUpdateApikeyOptions : Instantiate UpdateApikeyOptions +func (*DrAutomationServiceV1) NewUpdateApikeyOptions(instanceID string, apiKey string) *UpdateApikeyOptions { + return &UpdateApikeyOptions{ + InstanceID: core.StringPtr(instanceID), + APIKey: core.StringPtr(apiKey), + } +} + +// SetInstanceID : Allow user to set InstanceID +func (_options *UpdateApikeyOptions) SetInstanceID(instanceID string) *UpdateApikeyOptions { + _options.InstanceID = core.StringPtr(instanceID) + return _options +} + +// SetAPIKey : Allow user to set APIKey +func (_options *UpdateApikeyOptions) SetAPIKey(apiKey string) *UpdateApikeyOptions { + _options.APIKey = core.StringPtr(apiKey) + return _options +} + +// SetAcceptLanguage : Allow user to set AcceptLanguage +func (_options *UpdateApikeyOptions) SetAcceptLanguage(acceptLanguage string) *UpdateApikeyOptions { + _options.AcceptLanguage = core.StringPtr(acceptLanguage) + return _options +} + +// SetIfNoneMatch : Allow user to set IfNoneMatch +func (_options *UpdateApikeyOptions) SetIfNoneMatch(ifNoneMatch string) *UpdateApikeyOptions { + _options.IfNoneMatch = core.StringPtr(ifNoneMatch) + return _options +} + +// SetHeaders : Allow user to set Headers +func (options *UpdateApikeyOptions) SetHeaders(param map[string]string) *UpdateApikeyOptions { + options.Headers = param + return options +} + +// ValidationKeyResponse : Response object for API key validation, including ID, status, and description. +type ValidationKeyResponse struct { + // Validation result message. + Description *string `json:"description,omitempty"` + + // Unique identifier of the API key. + ID *string `json:"id,omitempty"` + + // Status of the API key. + Status *string `json:"status,omitempty"` +} + +// UnmarshalValidationKeyResponse unmarshals an instance of ValidationKeyResponse from the specified map of raw messages. +func UnmarshalValidationKeyResponse(m map[string]json.RawMessage, result interface{}) (err error) { + obj := new(ValidationKeyResponse) + err = core.UnmarshalPrimitive(m, "description", &obj.Description) + if err != nil { + err = core.SDKErrorf(err, "", "description-error", common.GetComponentInfo()) + return + } + err = core.UnmarshalPrimitive(m, "id", &obj.ID) + if err != nil { + err = core.SDKErrorf(err, "", "id-error", common.GetComponentInfo()) + return + } + err = core.UnmarshalPrimitive(m, "status", &obj.Status) + if err != nil { + err = core.SDKErrorf(err, "", "status-error", common.GetComponentInfo()) + return + } + reflect.ValueOf(result).Elem().Set(reflect.ValueOf(obj)) + return +} diff --git a/ibm/service/drautomationservice/dra-go-sdk/drautomationservicev1/dr_automation_service_v1_custom_examples_test.go b/ibm/service/drautomationservice/dra-go-sdk/drautomationservicev1/dr_automation_service_v1_custom_examples_test.go new file mode 100644 index 0000000000..e5aca61a93 --- /dev/null +++ b/ibm/service/drautomationservice/dra-go-sdk/drautomationservicev1/dr_automation_service_v1_custom_examples_test.go @@ -0,0 +1,254 @@ +//go:build customexamples +// +build customexamples + +package drautomationservicev1_test + +import ( + "encoding/json" + "fmt" + "os" + + "github.com/IBM/go-sdk-core/v5/core" + . "github.com/onsi/ginkgo" + . "github.com/onsi/gomega" + "github.ibm.com/DRAutomation/dra-go-sdk/drautomationservicev1" +) + +// This file provides an example of how to use the DrAutomation Service service. +// +// The following configuration properties are assumed to be defined: +// DR_AUTOMATION_SERVICE_URL= +// DR_AUTOMATION_SERVICE_AUTH_TYPE=iam +// DR_AUTOMATION_SERVICE_APIKEY= +// DR_AUTOMATION_SERVICE_AUTH_URL= +// +// These configuration properties can be exported as environment variables, or stored +// in a configuration file and then: +// export IBM_CREDENTIALS_FILE= +var _ = Describe(`DrAutomationServiceV1 Examples Tests`, func() { + + const externalConfigFile = "../dr_automation_service_v1.env" + + var ( + drAutomationServiceService *drautomationservicev1.DrAutomationServiceV1 + config map[string]string + ) + + var shouldSkipTest = func() { + Skip("External configuration is not available, skipping examples...") + } + + Describe(`External configuration`, func() { + It("Successfully load the configuration", func() { + var err error + _, err = os.Stat(externalConfigFile) + if err != nil { + Skip("External configuration file not found, skipping examples: " + err.Error()) + } + + os.Setenv("IBM_CREDENTIALS_FILE", externalConfigFile) + config, err = core.GetServiceProperties(drautomationservicev1.DefaultServiceName) + if err != nil { + Skip("Error loading service properties, skipping examples: " + err.Error()) + } else if len(config) == 0 { + Skip("Unable to load service properties, skipping examples") + } + + shouldSkipTest = func() {} + }) + }) + + Describe(`Client initialization`, func() { + BeforeEach(func() { + shouldSkipTest() + }) + It("Successfully construct the service client instance", func() { + var err error + + // begin-common + + drAutomationServiceServiceOptions := &drautomationservicev1.DrAutomationServiceV1Options{} + + drAutomationServiceService, err = drautomationservicev1.NewDrAutomationServiceV1UsingExternalConfig(drAutomationServiceServiceOptions) + + if err != nil { + panic(err) + } + + // end-common + + Expect(drAutomationServiceService).ToNot(BeNil()) + }) + }) + + Describe(`DrAutomationServiceV1 request examples`, func() { + BeforeEach(func() { + shouldSkipTest() + }) + + // -------- HA Cases --------- + + // 1. HA with sshkey + It(`ServiceInstanceManageDr HA with sshkey`, func() { + fmt.Println("\ncreate_manage_dr_ha_with_sshkey() result:") + // begin-create_manage_dr_ha_with_sshkey + createManageDrOptions := drAutomationServiceService.NewCreateManageDrOptions( + "crn:v1:staging:public:power-dr-automation:global:a/a09202c1bfb04ceebfb4a9fd38c87721:050ebe3b-13f4-4db8-8ece-501a3c13be80mh1::", + ) + createManageDrOptions.SetOrchestratorHa(true) + createManageDrOptions.SetOrchestratorLocationType("off-premises") + createManageDrOptions.SetLocationID("dal10") + createManageDrOptions.SetOrchestratorWorkspaceID("75cbf05b-78f6-406e-afe7-a904f646d798") + createManageDrOptions.SetOrchestratorName("drautomationprimarymh1") + createManageDrOptions.SetOrchestratorPassword("EverytimeNewPassword@1") + createManageDrOptions.SetMachineType("s922") + createManageDrOptions.SetTier("tier1") + createManageDrOptions.SetSSHKeyName("vijaykey") + createManageDrOptions.SetAPIKey("apikey is required") + // Standby fields (only for HA) + createManageDrOptions.SetStandbyOrchestratorName("drautomationstandbymh1") + createManageDrOptions.SetStandbyOrchestratorWorkspaceID("71027b79-0e31-44f6-a499-63eca1a66feb") + createManageDrOptions.SetStandbyMachineType("s922") + createManageDrOptions.SetStandbyTier("tier1") + createManageDrOptions.SetStandByRedeploy("false") + // mfa + createManageDrOptions.SetClientID("123abcd-97d2-4b14-bf62-8eaecc67a122") + createManageDrOptions.SetClientSecret("abcdefgT5rS8wK6qR9dD7vF1hU4sA3bE2jG0pL9oX7yC") + createManageDrOptions.SetTenantName("xxx.ibm.com") + + serviceInstanceManageDr, response, err := drAutomationServiceService.CreateManageDr(createManageDrOptions) + if err != nil { + panic(err) + } + b, _ := json.MarshalIndent(serviceInstanceManageDr, "", " ") + fmt.Println(string(b)) + // end-create_manage_dr_ha_with_sshkey + + Expect(err).To(BeNil()) + Expect(response.StatusCode).To(Equal(200)) + Expect(serviceInstanceManageDr).ToNot(BeNil()) + }) + + // 2. HA with secrets + It(`ServiceInstanceManageDr HA with secrets`, func() { + fmt.Println("\ncreate_manage_dr_ha_with_secrets() result:") + // begin-create_manage_dr_ha_with_secrets + + createManageDrOptions := drAutomationServiceService.NewCreateManageDrOptions( + "crn:v1:staging:public:power-dr-automation:global:a/a09202c1bfb04ceebfb4a9fd38c87721:050ebe3b-13f4-4db8-8ece-501a3c13be80mh3::", + ) + createManageDrOptions.SetOrchestratorHa(true) + createManageDrOptions.SetOrchestratorLocationType("off-premises") + createManageDrOptions.SetLocationID("dal10") + createManageDrOptions.SetOrchestratorWorkspaceID("75cbf05b-78f6-406e-afe7-a904f646d798") + createManageDrOptions.SetOrchestratorName("drautomationprimarymh3") + createManageDrOptions.SetOrchestratorPassword("EverytimeNewPassword@1") + createManageDrOptions.SetMachineType("s922") + createManageDrOptions.SetTier("tier1") + createManageDrOptions.SetGUID("397dc20d-9f66-46dc-a750-d15392872023") + createManageDrOptions.SetSecretGroup("12345-714f-86a6-6a50-2f128a4e7ac2") + createManageDrOptions.SetSecret("12345-997c-1d0d-5503-27ca856f2b5a") + createManageDrOptions.SetRegionID("us-south") + createManageDrOptions.SetAPIKey("apikey is required") + // Standby fields (only for HA) + createManageDrOptions.SetStandbyOrchestratorName("drautomationstandbymh3") + createManageDrOptions.SetStandbyOrchestratorWorkspaceID("71027b79-0e31-44f6-a499-63eca1a66feb") + createManageDrOptions.SetStandbyMachineType("s922") + createManageDrOptions.SetStandbyTier("tier1") + createManageDrOptions.SetStandByRedeploy("false") + // mfa + createManageDrOptions.SetClientID("123abcd-97d2-4b14-bf62-8eaecc67a122") + createManageDrOptions.SetClientSecret("abcdefgT5rS8wK6qR9dD7vF1hU4sA3bE2jG0pL9oX7yC") + createManageDrOptions.SetTenantName("xxx.ibm.com") + + serviceInstanceManageDr, response, err := drAutomationServiceService.CreateManageDr(createManageDrOptions) + if err != nil { + panic(err) + } + b, _ := json.MarshalIndent(serviceInstanceManageDr, "", " ") + fmt.Println(string(b)) + // end-create_manage_dr_ha_with_secrets + + Expect(err).To(BeNil()) + Expect(response.StatusCode).To(Equal(200)) + Expect(serviceInstanceManageDr).ToNot(BeNil()) + }) + + // -------- Non-HA Cases --------- + + // 3. Non-HA with sshkey + It(`ServiceInstanceManageDr Non-HA with sshkey`, func() { + fmt.Println("\ncreate_manage_dr_nonha_with_sshkey() result:") + // begin-create_manage_dr_nonha_with_sshkey + + createManageDrOptions := drAutomationServiceService.NewCreateManageDrOptions( + "crn:v1:staging:public:power-dr-automation:global:a/a09202c1bfb04ceebfb4a9fd38c87721:050ebe3b-13f4-4db8-8ece-501a3c13be80mnh5::", + ) + createManageDrOptions.SetOrchestratorHa(false) + createManageDrOptions.SetOrchestratorLocationType("off-premises") + createManageDrOptions.SetLocationID("dal10") + createManageDrOptions.SetOrchestratorWorkspaceID("75cbf05b-78f6-406e-afe7-a904f646d798") + createManageDrOptions.SetOrchestratorName("drautomationprimarymnh5") + createManageDrOptions.SetOrchestratorPassword("EverytimeNewPassword@1") + createManageDrOptions.SetMachineType("s922") + createManageDrOptions.SetTier("tier1") + createManageDrOptions.SetSSHKeyName("vijaykey") + createManageDrOptions.SetAPIKey("apikey is required") + // mfa + createManageDrOptions.SetClientID("123abcd-97d2-4b14-bf62-8eaecc67a122") + createManageDrOptions.SetClientSecret("abcdefgT5rS8wK6qR9dD7vF1hU4sA3bE2jG0pL9oX7yC") + createManageDrOptions.SetTenantName("xxx.ibm.com") + + serviceInstanceManageDr, response, err := drAutomationServiceService.CreateManageDr(createManageDrOptions) + if err != nil { + panic(err) + } + b, _ := json.MarshalIndent(serviceInstanceManageDr, "", " ") + fmt.Println(string(b)) + // end-create_manage_dr_nonha_with_sshkey + + Expect(err).To(BeNil()) + Expect(response.StatusCode).To(Equal(200)) + Expect(serviceInstanceManageDr).ToNot(BeNil()) + }) + + // 4. Non-HA with secrets + It(`ServiceInstanceManageDr Non-HA with secrets`, func() { + fmt.Println("\ncreate_manage_dr_nonha_with_secrets() result:") + // begin-create_manage_dr_nonha_with_secrets + + createManageDrOptions := drAutomationServiceService.NewCreateManageDrOptions( + "crn:v1:staging:public:power-dr-automation:global:a/a09202c1bfb04ceebfb4a9fd38c87721:050ebe3b-13f4-4db8-8ece-501a3c13be80mnh7::", + ) + createManageDrOptions.SetOrchestratorHa(false) + createManageDrOptions.SetOrchestratorLocationType("off-premises") + createManageDrOptions.SetLocationID("dal10") + createManageDrOptions.SetOrchestratorWorkspaceID("75cbf05b-78f6-406e-afe7-a904f646d798") + createManageDrOptions.SetOrchestratorName("drautomationprimarymnh7") + createManageDrOptions.SetOrchestratorPassword("EverytimeNewPassword@1") + createManageDrOptions.SetMachineType("s922") + createManageDrOptions.SetTier("tier1") + createManageDrOptions.SetGUID("397dc20d-9f66-46dc-a750-d15392872023") + createManageDrOptions.SetSecretGroup("12345-714f-86a6-6a50-2f128a4e7ac2") + createManageDrOptions.SetSecret("12345-997c-1d0d-5503-27ca856f2b5a") + createManageDrOptions.SetRegionID("us-south") + createManageDrOptions.SetAPIKey("apikey is required") + // mfa + createManageDrOptions.SetClientID("123abcd-97d2-4b14-bf62-8eaecc67a122") + createManageDrOptions.SetClientSecret("abcdefgT5rS8wK6qR9dD7vF1hU4sA3bE2jG0pL9oX7yC") + createManageDrOptions.SetTenantName("xxx.ibm.com") + + serviceInstanceManageDr, response, err := drAutomationServiceService.CreateManageDr(createManageDrOptions) + if err != nil { + panic(err) + } + b, _ := json.MarshalIndent(serviceInstanceManageDr, "", " ") + fmt.Println(string(b)) + // end-create_manage_dr_nonha_with_secrets + + Expect(err).To(BeNil()) + Expect(response.StatusCode).To(Equal(200)) + Expect(serviceInstanceManageDr).ToNot(BeNil()) + }) + }) +}) diff --git a/ibm/service/drautomationservice/dra-go-sdk/drautomationservicev1/dr_automation_service_v1_examples_test.go b/ibm/service/drautomationservice/dra-go-sdk/drautomationservicev1/dr_automation_service_v1_examples_test.go new file mode 100644 index 0000000000..9398ff5c8c --- /dev/null +++ b/ibm/service/drautomationservice/dra-go-sdk/drautomationservicev1/dr_automation_service_v1_examples_test.go @@ -0,0 +1,427 @@ +//go:build examples + +/** + * (C) Copyright IBM Corp. 2025. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package drautomationservicev1_test + +import ( + "encoding/json" + "fmt" + "os" + + "github.com/IBM/go-sdk-core/v5/core" + . "github.com/onsi/ginkgo" + . "github.com/onsi/gomega" + "github.ibm.com/DRAutomation/dra-go-sdk/drautomationservicev1" +) + +// This file provides an example of how to use the DrAutomation Service service. +// +// The following configuration properties are assumed to be defined: +// DR_AUTOMATION_SERVICE_URL= +// DR_AUTOMATION_SERVICE_AUTH_TYPE=iam +// DR_AUTOMATION_SERVICE_APIKEY= +// DR_AUTOMATION_SERVICE_AUTH_URL= +// +// These configuration properties can be exported as environment variables, or stored +// in a configuration file and then: +// export IBM_CREDENTIALS_FILE= +var _ = Describe(`DrAutomationServiceV1 Examples Tests`, func() { + + const externalConfigFile = "../dr_automation_service_v1.env" + + var ( + drAutomationServiceService *drautomationservicev1.DrAutomationServiceV1 + config map[string]string + ) + + var shouldSkipTest = func() { + Skip("External configuration is not available, skipping examples...") + } + + Describe(`External configuration`, func() { + It("Successfully load the configuration", func() { + var err error + _, err = os.Stat(externalConfigFile) + if err != nil { + Skip("External configuration file not found, skipping examples: " + err.Error()) + } + + os.Setenv("IBM_CREDENTIALS_FILE", externalConfigFile) + config, err = core.GetServiceProperties(drautomationservicev1.DefaultServiceName) + if err != nil { + Skip("Error loading service properties, skipping examples: " + err.Error()) + } else if len(config) == 0 { + Skip("Unable to load service properties, skipping examples") + } + + shouldSkipTest = func() {} + }) + }) + + Describe(`Client initialization`, func() { + BeforeEach(func() { + shouldSkipTest() + }) + It("Successfully construct the service client instance", func() { + var err error + + // begin-common + + drAutomationServiceServiceOptions := &drautomationservicev1.DrAutomationServiceV1Options{} + + drAutomationServiceService, err = drautomationservicev1.NewDrAutomationServiceV1UsingExternalConfig(drAutomationServiceServiceOptions) + + if err != nil { + panic(err) + } + + // end-common + + Expect(drAutomationServiceService).ToNot(BeNil()) + }) + }) + + Describe(`DrAutomationServiceV1 request examples`, func() { + BeforeEach(func() { + shouldSkipTest() + }) + It(`GetApikey request example`, func() { + fmt.Println("\nGetApikey() result:") + // begin-get_apikey + + getApikeyOptions := drAutomationServiceService.NewGetApikeyOptions( + "crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::", + ) + + validationKeyResponse, response, err := drAutomationServiceService.GetApikey(getApikeyOptions) + if err != nil { + panic(err) + } + b, _ := json.MarshalIndent(validationKeyResponse, "", " ") + fmt.Println(string(b)) + + // end-get_apikey + + Expect(err).To(BeNil()) + Expect(response.StatusCode).To(Equal(200)) + Expect(validationKeyResponse).ToNot(BeNil()) + }) + It(`CreateApikey request example`, func() { + fmt.Println("\nCreateApikey() result:") + // begin-create_apikey + + createApikeyOptions := drAutomationServiceService.NewCreateApikeyOptions( + "crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::", + "abcdefrg_izklmnop_fxbEED", + ) + + validationKeyResponse, response, err := drAutomationServiceService.CreateApikey(createApikeyOptions) + if err != nil { + panic(err) + } + b, _ := json.MarshalIndent(validationKeyResponse, "", " ") + fmt.Println(string(b)) + + // end-create_apikey + + Expect(err).To(BeNil()) + Expect(response.StatusCode).To(Equal(200)) + Expect(validationKeyResponse).ToNot(BeNil()) + }) + It(`UpdateApikey request example`, func() { + fmt.Println("\nUpdateApikey() result:") + // begin-update_apikey + + updateApikeyOptions := drAutomationServiceService.NewUpdateApikeyOptions( + "crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::", + "adfadfdsafsdfdsf", + ) + + validationKeyResponse, response, err := drAutomationServiceService.UpdateApikey(updateApikeyOptions) + if err != nil { + panic(err) + } + b, _ := json.MarshalIndent(validationKeyResponse, "", " ") + fmt.Println(string(b)) + + // end-update_apikey + + Expect(err).To(BeNil()) + Expect(response.StatusCode).To(Equal(200)) + Expect(validationKeyResponse).ToNot(BeNil()) + }) + It(`GetDrGrsLocationPair request example`, func() { + fmt.Println("\nGetDrGrsLocationPair() result:") + // begin-get_dr_grs_location_pair + + getDrGrsLocationPairOptions := drAutomationServiceService.NewGetDrGrsLocationPairOptions( + "crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::", + ) + + getGrsLocationPairResponse, response, err := drAutomationServiceService.GetDrGrsLocationPair(getDrGrsLocationPairOptions) + if err != nil { + panic(err) + } + b, _ := json.MarshalIndent(getGrsLocationPairResponse, "", " ") + fmt.Println(string(b)) + + // end-get_dr_grs_location_pair + + Expect(err).To(BeNil()) + Expect(response.StatusCode).To(Equal(200)) + Expect(getGrsLocationPairResponse).ToNot(BeNil()) + }) + It(`GetDrLocations request example`, func() { + fmt.Println("\nGetDrLocations() result:") + // begin-get_dr_locations + + getDrLocationsOptions := drAutomationServiceService.NewGetDrLocationsOptions( + "crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::", + ) + + getDrLocationsResponse, response, err := drAutomationServiceService.GetDrLocations(getDrLocationsOptions) + if err != nil { + panic(err) + } + b, _ := json.MarshalIndent(getDrLocationsResponse, "", " ") + fmt.Println(string(b)) + + // end-get_dr_locations + + Expect(err).To(BeNil()) + Expect(response.StatusCode).To(Equal(200)) + Expect(getDrLocationsResponse).ToNot(BeNil()) + }) + It(`GetDrManagedVM request example`, func() { + fmt.Println("\nGetDrManagedVM() result:") + // begin-get_dr_managed_vm + + getDrManagedVMOptions := drAutomationServiceService.NewGetDrManagedVMOptions( + "crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::", + ) + + managedVMMapResponse, response, err := drAutomationServiceService.GetDrManagedVM(getDrManagedVMOptions) + if err != nil { + panic(err) + } + b, _ := json.MarshalIndent(managedVMMapResponse, "", " ") + fmt.Println(string(b)) + + // end-get_dr_managed_vm + + Expect(err).To(BeNil()) + Expect(response.StatusCode).To(Equal(200)) + Expect(managedVMMapResponse).ToNot(BeNil()) + }) + It(`GetDrSummary request example`, func() { + fmt.Println("\nGetDrSummary() result:") + // begin-get_dr_summary + + getDrSummaryOptions := drAutomationServiceService.NewGetDrSummaryOptions( + "crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::", + ) + + drAutomationGetSummaryResponse, response, err := drAutomationServiceService.GetDrSummary(getDrSummaryOptions) + if err != nil { + panic(err) + } + b, _ := json.MarshalIndent(drAutomationGetSummaryResponse, "", " ") + fmt.Println(string(b)) + + // end-get_dr_summary + + Expect(err).To(BeNil()) + Expect(response.StatusCode).To(Equal(200)) + Expect(drAutomationGetSummaryResponse).ToNot(BeNil()) + }) + It(`GetMachineType request example`, func() { + fmt.Println("\nGetMachineType() result:") + // begin-get_machine_type + + getMachineTypeOptions := drAutomationServiceService.NewGetMachineTypeOptions( + "crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::", + "Test-workspace-wdc06", + ) + getMachineTypeOptions.SetStandbyWorkspaceName("Test-workspace-wdc07") + + machineTypesByWorkspace, response, err := drAutomationServiceService.GetMachineType(getMachineTypeOptions) + if err != nil { + panic(err) + } + b, _ := json.MarshalIndent(machineTypesByWorkspace, "", " ") + fmt.Println(string(b)) + + // end-get_machine_type + + Expect(err).To(BeNil()) + Expect(response.StatusCode).To(Equal(200)) + Expect(machineTypesByWorkspace).ToNot(BeNil()) + }) + It(`GetPowervsWorkspaces request example`, func() { + fmt.Println("\nGetPowervsWorkspaces() result:") + // begin-get_powervs_workspaces + + getPowervsWorkspacesOptions := drAutomationServiceService.NewGetPowervsWorkspacesOptions( + "crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::", + "testString", + ) + + drData, response, err := drAutomationServiceService.GetPowervsWorkspaces(getPowervsWorkspacesOptions) + if err != nil { + panic(err) + } + b, _ := json.MarshalIndent(drData, "", " ") + fmt.Println(string(b)) + + // end-get_powervs_workspaces + + Expect(err).To(BeNil()) + Expect(response.StatusCode).To(Equal(200)) + Expect(drData).ToNot(BeNil()) + }) + It(`GetManageDr request example`, func() { + fmt.Println("\nGetManageDr() result:") + // begin-get_manage_dr + + getManageDrOptions := drAutomationServiceService.NewGetManageDrOptions( + "crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::", + ) + + serviceInstanceManageDr, response, err := drAutomationServiceService.GetManageDr(getManageDrOptions) + if err != nil { + panic(err) + } + b, _ := json.MarshalIndent(serviceInstanceManageDr, "", " ") + fmt.Println(string(b)) + + // end-get_manage_dr + + Expect(err).To(BeNil()) + Expect(response.StatusCode).To(Equal(200)) + Expect(serviceInstanceManageDr).ToNot(BeNil()) + }) + It(`CreateManageDr request example`, func() { + fmt.Println("\nCreateManageDr() result:") + // begin-create_manage_dr + + createManageDrOptions := drAutomationServiceService.NewCreateManageDrOptions( + "crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::", + ) + createManageDrOptions.SetOrchestratorHa(true) + createManageDrOptions.SetOrchestratorLocationType("off-premises") + createManageDrOptions.SetLocationID("dal10") + createManageDrOptions.SetOrchestratorWorkspaceID("75cbf05b-78f6-406e-afe7-a904f646d798") + createManageDrOptions.SetOrchestratorName("drautomationprimarybyh1105") + createManageDrOptions.SetOrchestratorPassword("EverytimeNewPassword@1") + createManageDrOptions.SetMachineType("s922") + createManageDrOptions.SetTier("tier1") + createManageDrOptions.SetSSHKeyName("vijaykey") + createManageDrOptions.SetAPIKey("key should pass") + // Standby fields (only for HA) + createManageDrOptions.SetStandbyOrchestratorName("drautomationstandbyh1105") + createManageDrOptions.SetStandbyOrchestratorWorkspaceID("71027b79-0e31-44f6-a499-63eca1a66feb") + createManageDrOptions.SetStandbyMachineType("s922") + createManageDrOptions.SetStandbyTier("tier1") + createManageDrOptions.SetStandByRedeploy("false") + // mfa + createManageDrOptions.SetClientID("123abcd-97d2-4b14-bf62-8eaecc67a122") + createManageDrOptions.SetClientSecret("abcdefgT5rS8wK6qR9dD7vF1hU4sA3bE2jG0pL9oX7yC") + createManageDrOptions.SetTenantName("xxx.ibm.com") + + serviceInstanceManageDr, response, err := drAutomationServiceService.CreateManageDr(createManageDrOptions) + if err != nil { + panic(err) + } + b, _ := json.MarshalIndent(serviceInstanceManageDr, "", " ") + fmt.Println(string(b)) + + // end-create_manage_dr + + Expect(err).To(BeNil()) + Expect(response.StatusCode).To(Equal(200)) + Expect(serviceInstanceManageDr).ToNot(BeNil()) + }) + It(`GetLastOperation request example`, func() { + fmt.Println("\nGetLastOperation() result:") + // begin-get_last_operation + + getLastOperationOptions := drAutomationServiceService.NewGetLastOperationOptions( + "crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::", + ) + + serviceInstanceStatus, response, err := drAutomationServiceService.GetLastOperation(getLastOperationOptions) + if err != nil { + panic(err) + } + b, _ := json.MarshalIndent(serviceInstanceStatus, "", " ") + fmt.Println(string(b)) + + // end-get_last_operation + + Expect(err).To(BeNil()) + Expect(response.StatusCode).To(Equal(200)) + Expect(serviceInstanceStatus).ToNot(BeNil()) + }) + It(`ListEvents request example`, func() { + fmt.Println("\nListEvents() result:") + // begin-list_events + + listEventsOptions := drAutomationServiceService.NewListEventsOptions( + "crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::", + ) + listEventsOptions.SetTime("2025-06-19T23:59:59Z") + listEventsOptions.SetFromTime("2025-06-19T00:00:00Z") + listEventsOptions.SetToTime("2025-06-19T23:59:59Z") + + eventCollection, response, err := drAutomationServiceService.ListEvents(listEventsOptions) + if err != nil { + panic(err) + } + b, _ := json.MarshalIndent(eventCollection, "", " ") + fmt.Println(string(b)) + + // end-list_events + + Expect(err).To(BeNil()) + Expect(response.StatusCode).To(Equal(200)) + Expect(eventCollection).ToNot(BeNil()) + }) + It(`GetEvent request example`, func() { + fmt.Println("\nGetEvent() result:") + // begin-get_event + + getEventOptions := drAutomationServiceService.NewGetEventOptions( + "crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::", + "00116b2a-9326-4024-839e-fb5364b76898", + ) + + event, response, err := drAutomationServiceService.GetEvent(getEventOptions) + if err != nil { + panic(err) + } + b, _ := json.MarshalIndent(event, "", " ") + fmt.Println(string(b)) + + // end-get_event + + Expect(err).To(BeNil()) + Expect(response.StatusCode).To(Equal(200)) + Expect(event).ToNot(BeNil()) + }) + }) +}) diff --git a/ibm/service/drautomationservice/dra-go-sdk/drautomationservicev1/dr_automation_service_v1_integration_test.go b/ibm/service/drautomationservice/dra-go-sdk/drautomationservicev1/dr_automation_service_v1_integration_test.go new file mode 100644 index 0000000000..357495d7dc --- /dev/null +++ b/ibm/service/drautomationservice/dra-go-sdk/drautomationservicev1/dr_automation_service_v1_integration_test.go @@ -0,0 +1,385 @@ +//go:build integration + +/** + * (C) Copyright IBM Corp. 2025. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package drautomationservicev1_test + +import ( + "fmt" + "log" + "os" + "time" + + "github.com/IBM/go-sdk-core/v5/core" + . "github.com/onsi/ginkgo" + . "github.com/onsi/gomega" + "github.ibm.com/DRAutomation/dra-go-sdk/drautomationservicev1" +) + +/** + * This file contains an integration test for the drautomationservicev1 package. + * + * Notes: + * + * The integration test will automatically skip tests if the required config file is not available. + */ + +var _ = Describe(`DrAutomationServiceV1 Integration Tests`, func() { + const externalConfigFile = "../dr_automation_service_v1.env" + + var ( + err error + drAutomationServiceService *drautomationservicev1.DrAutomationServiceV1 + serviceURL string + config map[string]string + ) + + var shouldSkipTest = func() { + Skip("External configuration is not available, skipping tests...") + } + + Describe(`External configuration`, func() { + It("Successfully load the configuration", func() { + _, err = os.Stat(externalConfigFile) + if err != nil { + Skip("External configuration file not found, skipping tests: " + err.Error()) + } + + os.Setenv("IBM_CREDENTIALS_FILE", externalConfigFile) + config, err = core.GetServiceProperties(drautomationservicev1.DefaultServiceName) + if err != nil { + Skip("Error loading service properties, skipping tests: " + err.Error()) + } + serviceURL = config["URL"] + if serviceURL == "" { + Skip("Unable to load service URL configuration property, skipping tests") + } + + fmt.Fprintf(GinkgoWriter, "Service URL: %v\n", serviceURL) + shouldSkipTest = func() {} + }) + }) + + Describe(`Client initialization`, func() { + BeforeEach(func() { + shouldSkipTest() + }) + It("Successfully construct the service client instance", func() { + drAutomationServiceServiceOptions := &drautomationservicev1.DrAutomationServiceV1Options{} + + drAutomationServiceService, err = drautomationservicev1.NewDrAutomationServiceV1UsingExternalConfig(drAutomationServiceServiceOptions) + Expect(err).To(BeNil()) + Expect(drAutomationServiceService).ToNot(BeNil()) + Expect(drAutomationServiceService.Service.Options.URL).To(Equal(serviceURL)) + + core.SetLogger(core.NewLogger(core.LevelDebug, log.New(GinkgoWriter, "", log.LstdFlags), log.New(GinkgoWriter, "", log.LstdFlags))) + drAutomationServiceService.EnableRetries(4, 30*time.Second) + }) + }) + + Describe(`GetApikey - Validates whether current apikey is valid or not`, func() { + BeforeEach(func() { + shouldSkipTest() + }) + It(`GetApikey(getApikeyOptions *GetApikeyOptions)`, func() { + getApikeyOptions := &drautomationservicev1.GetApikeyOptions{ + InstanceID: core.StringPtr("crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::"), + AcceptLanguage: core.StringPtr("testString"), + IfNoneMatch: core.StringPtr("testString"), + } + + validationKeyResponse, response, err := drAutomationServiceService.GetApikey(getApikeyOptions) + Expect(err).To(BeNil()) + Expect(response.StatusCode).To(Equal(200)) + Expect(validationKeyResponse).ToNot(BeNil()) + }) + }) + + Describe(`CreateApikey - validate key api`, func() { + BeforeEach(func() { + shouldSkipTest() + }) + It(`CreateApikey(createApikeyOptions *CreateApikeyOptions)`, func() { + createApikeyOptions := &drautomationservicev1.CreateApikeyOptions{ + InstanceID: core.StringPtr("crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::"), + APIKey: core.StringPtr("abcdefrg_izklmnop_fxbEED"), + AcceptLanguage: core.StringPtr("testString"), + IfNoneMatch: core.StringPtr("testString"), + } + + validationKeyResponse, response, err := drAutomationServiceService.CreateApikey(createApikeyOptions) + Expect(err).To(BeNil()) + Expect(response.StatusCode).To(Equal(200)) + Expect(validationKeyResponse).ToNot(BeNil()) + }) + }) + + Describe(`UpdateApikey - Updates the API key for the specified service instance`, func() { + BeforeEach(func() { + shouldSkipTest() + }) + It(`UpdateApikey(updateApikeyOptions *UpdateApikeyOptions)`, func() { + updateApikeyOptions := &drautomationservicev1.UpdateApikeyOptions{ + InstanceID: core.StringPtr("crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::"), + APIKey: core.StringPtr("adfadfdsafsdfdsf"), + AcceptLanguage: core.StringPtr("testString"), + IfNoneMatch: core.StringPtr("testString"), + } + + validationKeyResponse, response, err := drAutomationServiceService.UpdateApikey(updateApikeyOptions) + Expect(err).To(BeNil()) + Expect(response.StatusCode).To(Equal(200)) + Expect(validationKeyResponse).ToNot(BeNil()) + }) + }) + + Describe(`GetDrGrsLocationPair - Get GRS location pairs based on managed vms`, func() { + BeforeEach(func() { + shouldSkipTest() + }) + It(`GetDrGrsLocationPair(getDrGrsLocationPairOptions *GetDrGrsLocationPairOptions)`, func() { + getDrGrsLocationPairOptions := &drautomationservicev1.GetDrGrsLocationPairOptions{ + InstanceID: core.StringPtr("crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::"), + AcceptLanguage: core.StringPtr("testString"), + IfNoneMatch: core.StringPtr("testString"), + } + + getGrsLocationPairResponse, response, err := drAutomationServiceService.GetDrGrsLocationPair(getDrGrsLocationPairOptions) + Expect(err).To(BeNil()) + Expect(response.StatusCode).To(Equal(200)) + Expect(getGrsLocationPairResponse).ToNot(BeNil()) + }) + }) + + Describe(`GetDrLocations - Get Disaster recovery locations`, func() { + BeforeEach(func() { + shouldSkipTest() + }) + It(`GetDrLocations(getDrLocationsOptions *GetDrLocationsOptions)`, func() { + getDrLocationsOptions := &drautomationservicev1.GetDrLocationsOptions{ + InstanceID: core.StringPtr("crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::"), + AcceptLanguage: core.StringPtr("testString"), + IfNoneMatch: core.StringPtr("testString"), + } + + getDrLocationsResponse, response, err := drAutomationServiceService.GetDrLocations(getDrLocationsOptions) + Expect(err).To(BeNil()) + Expect(response.StatusCode).To(Equal(200)) + Expect(getDrLocationsResponse).ToNot(BeNil()) + }) + }) + + Describe(`GetDrManagedVM - Get managed vms for the instance`, func() { + BeforeEach(func() { + shouldSkipTest() + }) + It(`GetDrManagedVM(getDrManagedVMOptions *GetDrManagedVMOptions)`, func() { + getDrManagedVMOptions := &drautomationservicev1.GetDrManagedVMOptions{ + InstanceID: core.StringPtr("crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::"), + AcceptLanguage: core.StringPtr("testString"), + IfNoneMatch: core.StringPtr("testString"), + } + + managedVMMapResponse, response, err := drAutomationServiceService.GetDrManagedVM(getDrManagedVMOptions) + Expect(err).To(BeNil()) + Expect(response.StatusCode).To(Equal(200)) + Expect(managedVMMapResponse).ToNot(BeNil()) + }) + }) + + Describe(`GetDrSummary - Disaster recovery deployment details`, func() { + BeforeEach(func() { + shouldSkipTest() + }) + It(`GetDrSummary(getDrSummaryOptions *GetDrSummaryOptions)`, func() { + getDrSummaryOptions := &drautomationservicev1.GetDrSummaryOptions{ + InstanceID: core.StringPtr("crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::"), + AcceptLanguage: core.StringPtr("testString"), + IfNoneMatch: core.StringPtr("testString"), + } + + drAutomationGetSummaryResponse, response, err := drAutomationServiceService.GetDrSummary(getDrSummaryOptions) + Expect(err).To(BeNil()) + Expect(response.StatusCode).To(Equal(200)) + Expect(drAutomationGetSummaryResponse).ToNot(BeNil()) + }) + }) + + Describe(`GetMachineType - Get MachineTypes based on selected workspaces`, func() { + BeforeEach(func() { + shouldSkipTest() + }) + It(`GetMachineType(getMachineTypeOptions *GetMachineTypeOptions)`, func() { + getMachineTypeOptions := &drautomationservicev1.GetMachineTypeOptions{ + InstanceID: core.StringPtr("crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::"), + PrimaryWorkspaceName: core.StringPtr("Test-workspace-wdc06"), + AcceptLanguage: core.StringPtr("testString"), + IfNoneMatch: core.StringPtr("testString"), + StandbyWorkspaceName: core.StringPtr("Test-workspace-wdc07"), + } + + machineTypesByWorkspace, response, err := drAutomationServiceService.GetMachineType(getMachineTypeOptions) + Expect(err).To(BeNil()) + Expect(response.StatusCode).To(Equal(200)) + Expect(machineTypesByWorkspace).ToNot(BeNil()) + }) + }) + + Describe(`GetPowervsWorkspaces - List of primary and standby powervs workspaces`, func() { + BeforeEach(func() { + shouldSkipTest() + }) + It(`GetPowervsWorkspaces(getPowervsWorkspacesOptions *GetPowervsWorkspacesOptions)`, func() { + getPowervsWorkspacesOptions := &drautomationservicev1.GetPowervsWorkspacesOptions{ + InstanceID: core.StringPtr("crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::"), + LocationID: core.StringPtr("testString"), + IfNoneMatch: core.StringPtr("testString"), + } + + drData, response, err := drAutomationServiceService.GetPowervsWorkspaces(getPowervsWorkspacesOptions) + Expect(err).To(BeNil()) + Expect(response.StatusCode).To(Equal(200)) + Expect(drData).ToNot(BeNil()) + }) + }) + + Describe(`GetManageDr - View configured DR automation details`, func() { + BeforeEach(func() { + shouldSkipTest() + }) + It(`GetManageDr(getManageDrOptions *GetManageDrOptions)`, func() { + getManageDrOptions := &drautomationservicev1.GetManageDrOptions{ + InstanceID: core.StringPtr("crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::"), + AcceptLanguage: core.StringPtr("testString"), + IfNoneMatch: core.StringPtr("testString"), + } + + serviceInstanceManageDr, response, err := drAutomationServiceService.GetManageDr(getManageDrOptions) + Expect(err).To(BeNil()) + Expect(response.StatusCode).To(Equal(200)) + Expect(serviceInstanceManageDr).ToNot(BeNil()) + }) + }) + + Describe(`CreateManageDr - Create DR Deployment`, func() { + BeforeEach(func() { + shouldSkipTest() + }) + It(`CreateManageDr(createManageDrOptions *CreateManageDrOptions)`, func() { + createManageDrOptions := &drautomationservicev1.CreateManageDrOptions{ + InstanceID: core.StringPtr("crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::"), + APIKey: core.StringPtr("testString"), + ClientID: core.StringPtr("d9f2c83a-97d2-4b14-bf62-8eaecc67a122"), + ClientSecret: core.StringPtr("N8lQ4tP2xM1yT5rS8wK6qR9dD7vF1hU4sA3bE2jG0pL9oX7yC"), + GUID: core.StringPtr("123e4567-e89b-12d3-a456-426614174000"), + LocationID: core.StringPtr("dal10"), + MachineType: core.StringPtr("bx2-4x16"), + OrchestratorHa: core.BoolPtr(true), + OrchestratorLocationType: core.StringPtr("off-premises"), + OrchestratorName: core.StringPtr("adminUser"), + OrchestratorPassword: core.StringPtr("testString"), + OrchestratorWorkspaceID: core.StringPtr("orch-workspace-01"), + OrchestratorWorkspaceLocation: core.StringPtr("us-south"), + ProxyIP: core.StringPtr("10.40.30.10:8888"), + RegionID: core.StringPtr("us-south"), + ResourceInstance: core.StringPtr("crn:v1:bluemix:public:resource-controller::res123"), + SecondaryWorkspaceID: core.StringPtr("secondary-workspace789"), + Secret: core.StringPtr("testString"), + SecretGroup: core.StringPtr("default-secret-group"), + SSHKeyName: core.StringPtr("my-ssh-key"), + StandbyMachineType: core.StringPtr("bx2-8x32"), + StandbyOrchestratorName: core.StringPtr("standbyAdmin"), + StandbyOrchestratorWorkspaceID: core.StringPtr("orch-standby-02"), + StandbyOrchestratorWorkspaceLocation: core.StringPtr("us-east"), + StandbyTier: core.StringPtr("Premium"), + TenantName: core.StringPtr("xxx.ibm.com"), + Tier: core.StringPtr("Standard"), + StandByRedeploy: core.StringPtr("testString"), + AcceptLanguage: core.StringPtr("testString"), + IfNoneMatch: core.StringPtr("testString"), + AcceptsIncomplete: core.BoolPtr(true), + } + + serviceInstanceManageDr, response, err := drAutomationServiceService.CreateManageDr(createManageDrOptions) + Expect(err).To(BeNil()) + Expect(response.StatusCode).To(Equal(200)) + Expect(serviceInstanceManageDr).ToNot(BeNil()) + }) + }) + + Describe(`GetLastOperation - View details of Last operation performed on the instance`, func() { + BeforeEach(func() { + shouldSkipTest() + }) + It(`GetLastOperation(getLastOperationOptions *GetLastOperationOptions)`, func() { + getLastOperationOptions := &drautomationservicev1.GetLastOperationOptions{ + InstanceID: core.StringPtr("crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::"), + AcceptLanguage: core.StringPtr("testString"), + IfNoneMatch: core.StringPtr("testString"), + } + + serviceInstanceStatus, response, err := drAutomationServiceService.GetLastOperation(getLastOperationOptions) + Expect(err).To(BeNil()) + Expect(response.StatusCode).To(Equal(200)) + Expect(serviceInstanceStatus).ToNot(BeNil()) + }) + }) + + Describe(`ListEvents - Get events from the cloud instance since a specific timestamp`, func() { + BeforeEach(func() { + shouldSkipTest() + }) + It(`ListEvents(listEventsOptions *ListEventsOptions)`, func() { + listEventsOptions := &drautomationservicev1.ListEventsOptions{ + InstanceID: core.StringPtr("crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::"), + Time: core.StringPtr("2025-06-19T23:59:59Z"), + FromTime: core.StringPtr("2025-06-19T00:00:00Z"), + ToTime: core.StringPtr("2025-06-19T23:59:59Z"), + AcceptLanguage: core.StringPtr("testString"), + IfNoneMatch: core.StringPtr("testString"), + } + + eventCollection, response, err := drAutomationServiceService.ListEvents(listEventsOptions) + Expect(err).To(BeNil()) + Expect(response.StatusCode).To(Equal(200)) + Expect(eventCollection).ToNot(BeNil()) + }) + }) + + Describe(`GetEvent - Get a single event`, func() { + BeforeEach(func() { + shouldSkipTest() + }) + It(`GetEvent(getEventOptions *GetEventOptions)`, func() { + getEventOptions := &drautomationservicev1.GetEventOptions{ + InstanceID: core.StringPtr("crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::"), + EventID: core.StringPtr("00116b2a-9326-4024-839e-fb5364b76898"), + AcceptLanguage: core.StringPtr("testString"), + IfNoneMatch: core.StringPtr("testString"), + } + + event, response, err := drAutomationServiceService.GetEvent(getEventOptions) + Expect(err).To(BeNil()) + Expect(response.StatusCode).To(Equal(200)) + Expect(event).ToNot(BeNil()) + }) + }) +}) + +// +// Utility functions are declared in the unit test file +// diff --git a/ibm/service/drautomationservice/dra-go-sdk/drautomationservicev1/dr_automation_service_v1_suite_test.go b/ibm/service/drautomationservice/dra-go-sdk/drautomationservicev1/dr_automation_service_v1_suite_test.go new file mode 100644 index 0000000000..05c054cd74 --- /dev/null +++ b/ibm/service/drautomationservice/dra-go-sdk/drautomationservicev1/dr_automation_service_v1_suite_test.go @@ -0,0 +1,29 @@ +/** + * (C) Copyright IBM Corp. 2025. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package drautomationservicev1_test + +import ( + "testing" + + . "github.com/onsi/ginkgo" + . "github.com/onsi/gomega" +) + +func TestDrAutomationServiceV1(t *testing.T) { + RegisterFailHandler(Fail) + RunSpecs(t, "DrAutomationServiceV1 Suite") +} diff --git a/ibm/service/drautomationservice/dra-go-sdk/drautomationservicev1/dr_automation_service_v1_test.go b/ibm/service/drautomationservice/dra-go-sdk/drautomationservicev1/dr_automation_service_v1_test.go new file mode 100644 index 0000000000..9b15bd6df9 --- /dev/null +++ b/ibm/service/drautomationservice/dra-go-sdk/drautomationservicev1/dr_automation_service_v1_test.go @@ -0,0 +1,4086 @@ +/** + * (C) Copyright IBM Corp. 2025. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package drautomationservicev1_test + +import ( + "bytes" + "context" + "encoding/base64" + "fmt" + "io" + "net/http" + "net/http/httptest" + "os" + "time" + + "github.com/IBM/go-sdk-core/v5/core" + "github.com/go-openapi/strfmt" + . "github.com/onsi/ginkgo" + . "github.com/onsi/gomega" + "github.ibm.com/DRAutomation/dra-go-sdk/drautomationservicev1" +) + +var _ = Describe(`DrAutomationServiceV1`, func() { + var testServer *httptest.Server + Describe(`Service constructor tests`, func() { + It(`Instantiate service client`, func() { + drAutomationServiceService, serviceErr := drautomationservicev1.NewDrAutomationServiceV1(&drautomationservicev1.DrAutomationServiceV1Options{ + Authenticator: &core.NoAuthAuthenticator{}, + }) + Expect(drAutomationServiceService).ToNot(BeNil()) + Expect(serviceErr).To(BeNil()) + }) + It(`Instantiate service client with error: Invalid URL`, func() { + drAutomationServiceService, serviceErr := drautomationservicev1.NewDrAutomationServiceV1(&drautomationservicev1.DrAutomationServiceV1Options{ + URL: "{BAD_URL_STRING", + }) + Expect(drAutomationServiceService).To(BeNil()) + Expect(serviceErr).ToNot(BeNil()) + }) + It(`Instantiate service client with error: Invalid Auth`, func() { + drAutomationServiceService, serviceErr := drautomationservicev1.NewDrAutomationServiceV1(&drautomationservicev1.DrAutomationServiceV1Options{ + URL: "https://drautomationservicev1/api", + Authenticator: &core.BasicAuthenticator{ + Username: "", + Password: "", + }, + }) + Expect(drAutomationServiceService).To(BeNil()) + Expect(serviceErr).ToNot(BeNil()) + }) + }) + Describe(`Service constructor tests using external config`, func() { + Context(`Using external config, construct service client instances`, func() { + // Map containing environment variables used in testing. + var testEnvironment = map[string]string{ + "DR_AUTOMATION_SERVICE_URL": "https://drautomationservicev1/api", + "DR_AUTOMATION_SERVICE_AUTH_TYPE": "noauth", + } + + It(`Create service client using external config successfully`, func() { + SetTestEnvironment(testEnvironment) + drAutomationServiceService, serviceErr := drautomationservicev1.NewDrAutomationServiceV1UsingExternalConfig(&drautomationservicev1.DrAutomationServiceV1Options{}) + Expect(drAutomationServiceService).ToNot(BeNil()) + Expect(serviceErr).To(BeNil()) + ClearTestEnvironment(testEnvironment) + + clone := drAutomationServiceService.Clone() + Expect(clone).ToNot(BeNil()) + Expect(clone.Service != drAutomationServiceService.Service).To(BeTrue()) + Expect(clone.GetServiceURL()).To(Equal(drAutomationServiceService.GetServiceURL())) + Expect(clone.Service.Options.Authenticator).To(Equal(drAutomationServiceService.Service.Options.Authenticator)) + }) + It(`Create service client using external config and set url from constructor successfully`, func() { + SetTestEnvironment(testEnvironment) + drAutomationServiceService, serviceErr := drautomationservicev1.NewDrAutomationServiceV1UsingExternalConfig(&drautomationservicev1.DrAutomationServiceV1Options{ + URL: "https://testService/api", + }) + Expect(drAutomationServiceService).ToNot(BeNil()) + Expect(serviceErr).To(BeNil()) + Expect(drAutomationServiceService.Service.GetServiceURL()).To(Equal("https://testService/api")) + ClearTestEnvironment(testEnvironment) + + clone := drAutomationServiceService.Clone() + Expect(clone).ToNot(BeNil()) + Expect(clone.Service != drAutomationServiceService.Service).To(BeTrue()) + Expect(clone.GetServiceURL()).To(Equal(drAutomationServiceService.GetServiceURL())) + Expect(clone.Service.Options.Authenticator).To(Equal(drAutomationServiceService.Service.Options.Authenticator)) + }) + It(`Create service client using external config and set url programatically successfully`, func() { + SetTestEnvironment(testEnvironment) + drAutomationServiceService, serviceErr := drautomationservicev1.NewDrAutomationServiceV1UsingExternalConfig(&drautomationservicev1.DrAutomationServiceV1Options{}) + err := drAutomationServiceService.SetServiceURL("https://testService/api") + Expect(err).To(BeNil()) + Expect(drAutomationServiceService).ToNot(BeNil()) + Expect(serviceErr).To(BeNil()) + Expect(drAutomationServiceService.Service.GetServiceURL()).To(Equal("https://testService/api")) + ClearTestEnvironment(testEnvironment) + + clone := drAutomationServiceService.Clone() + Expect(clone).ToNot(BeNil()) + Expect(clone.Service != drAutomationServiceService.Service).To(BeTrue()) + Expect(clone.GetServiceURL()).To(Equal(drAutomationServiceService.GetServiceURL())) + Expect(clone.Service.Options.Authenticator).To(Equal(drAutomationServiceService.Service.Options.Authenticator)) + }) + }) + Context(`Using external config, construct service client instances with error: Invalid Auth`, func() { + // Map containing environment variables used in testing. + var testEnvironment = map[string]string{ + "DR_AUTOMATION_SERVICE_URL": "https://drautomationservicev1/api", + "DR_AUTOMATION_SERVICE_AUTH_TYPE": "someOtherAuth", + } + + SetTestEnvironment(testEnvironment) + drAutomationServiceService, serviceErr := drautomationservicev1.NewDrAutomationServiceV1UsingExternalConfig(&drautomationservicev1.DrAutomationServiceV1Options{}) + + It(`Instantiate service client with error`, func() { + Expect(drAutomationServiceService).To(BeNil()) + Expect(serviceErr).ToNot(BeNil()) + ClearTestEnvironment(testEnvironment) + }) + }) + Context(`Using external config, construct service client instances with error: Invalid URL`, func() { + // Map containing environment variables used in testing. + var testEnvironment = map[string]string{ + "DR_AUTOMATION_SERVICE_AUTH_TYPE": "NOAuth", + } + + SetTestEnvironment(testEnvironment) + drAutomationServiceService, serviceErr := drautomationservicev1.NewDrAutomationServiceV1UsingExternalConfig(&drautomationservicev1.DrAutomationServiceV1Options{ + URL: "{BAD_URL_STRING", + }) + + It(`Instantiate service client with error`, func() { + Expect(drAutomationServiceService).To(BeNil()) + Expect(serviceErr).ToNot(BeNil()) + ClearTestEnvironment(testEnvironment) + }) + }) + }) + Describe(`Regional endpoint tests`, func() { + It(`GetServiceURLForRegion(region string)`, func() { + var url string + var err error + url, err = drautomationservicev1.GetServiceURLForRegion("INVALID_REGION") + Expect(url).To(BeEmpty()) + Expect(err).ToNot(BeNil()) + fmt.Fprintf(GinkgoWriter, "Expected error: %s\n", err.Error()) + }) + }) + Describe(`GetApikey(getApikeyOptions *GetApikeyOptions) - Operation response error`, func() { + getApikeyPath := "/drautomation/v1/apikey/crn:v1:staging:public:power-dr-automation:global:a%2Fa123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::" + Context(`Using mock server endpoint with invalid JSON response`, func() { + BeforeEach(func() { + testServer = httptest.NewServer(http.HandlerFunc(func(res http.ResponseWriter, req *http.Request) { + defer GinkgoRecover() + + // Verify the contents of the request + Expect(req.URL.EscapedPath()).To(Equal(getApikeyPath)) + Expect(req.Method).To(Equal("GET")) + Expect(req.Header["Accept-Language"]).ToNot(BeNil()) + Expect(req.Header["Accept-Language"][0]).To(Equal(fmt.Sprintf("%v", "testString"))) + Expect(req.Header["If-None-Match"]).ToNot(BeNil()) + Expect(req.Header["If-None-Match"][0]).To(Equal(fmt.Sprintf("%v", "testString"))) + res.Header().Set("Content-type", "application/json") + res.WriteHeader(200) + fmt.Fprint(res, `} this is not valid json {`) + })) + }) + It(`Invoke GetApikey with error: Operation response processing error`, func() { + drAutomationServiceService, serviceErr := drautomationservicev1.NewDrAutomationServiceV1(&drautomationservicev1.DrAutomationServiceV1Options{ + URL: testServer.URL, + Authenticator: &core.NoAuthAuthenticator{}, + }) + Expect(serviceErr).To(BeNil()) + Expect(drAutomationServiceService).ToNot(BeNil()) + + // Construct an instance of the GetApikeyOptions model + getApikeyOptionsModel := new(drautomationservicev1.GetApikeyOptions) + getApikeyOptionsModel.InstanceID = core.StringPtr("crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::") + getApikeyOptionsModel.AcceptLanguage = core.StringPtr("testString") + getApikeyOptionsModel.IfNoneMatch = core.StringPtr("testString") + getApikeyOptionsModel.Headers = map[string]string{"x-custom-header": "x-custom-value"} + // Expect response parsing to fail since we are receiving a text/plain response + result, response, operationErr := drAutomationServiceService.GetApikey(getApikeyOptionsModel) + Expect(operationErr).ToNot(BeNil()) + Expect(response).ToNot(BeNil()) + Expect(result).To(BeNil()) + + // Enable retries and test again + drAutomationServiceService.EnableRetries(0, 0) + result, response, operationErr = drAutomationServiceService.GetApikey(getApikeyOptionsModel) + Expect(operationErr).ToNot(BeNil()) + Expect(response).ToNot(BeNil()) + Expect(result).To(BeNil()) + }) + AfterEach(func() { + testServer.Close() + }) + }) + }) + Describe(`GetApikey(getApikeyOptions *GetApikeyOptions)`, func() { + getApikeyPath := "/drautomation/v1/apikey/crn:v1:staging:public:power-dr-automation:global:a%2Fa123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::" + Context(`Using mock server endpoint with timeout`, func() { + BeforeEach(func() { + testServer = httptest.NewServer(http.HandlerFunc(func(res http.ResponseWriter, req *http.Request) { + defer GinkgoRecover() + + // Verify the contents of the request + Expect(req.URL.EscapedPath()).To(Equal(getApikeyPath)) + Expect(req.Method).To(Equal("GET")) + + Expect(req.Header["Accept-Language"]).ToNot(BeNil()) + Expect(req.Header["Accept-Language"][0]).To(Equal(fmt.Sprintf("%v", "testString"))) + Expect(req.Header["If-None-Match"]).ToNot(BeNil()) + Expect(req.Header["If-None-Match"][0]).To(Equal(fmt.Sprintf("%v", "testString"))) + // Sleep a short time to support a timeout test + time.Sleep(100 * time.Millisecond) + + // Set mock response + res.Header().Set("Content-type", "application/json") + res.WriteHeader(200) + fmt.Fprintf(res, "%s", `{"description": "Key is valid.", "id": "crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::", "status": "Active"}`) + })) + }) + It(`Invoke GetApikey successfully with retries`, func() { + drAutomationServiceService, serviceErr := drautomationservicev1.NewDrAutomationServiceV1(&drautomationservicev1.DrAutomationServiceV1Options{ + URL: testServer.URL, + Authenticator: &core.NoAuthAuthenticator{}, + }) + Expect(serviceErr).To(BeNil()) + Expect(drAutomationServiceService).ToNot(BeNil()) + drAutomationServiceService.EnableRetries(0, 0) + + // Construct an instance of the GetApikeyOptions model + getApikeyOptionsModel := new(drautomationservicev1.GetApikeyOptions) + getApikeyOptionsModel.InstanceID = core.StringPtr("crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::") + getApikeyOptionsModel.AcceptLanguage = core.StringPtr("testString") + getApikeyOptionsModel.IfNoneMatch = core.StringPtr("testString") + getApikeyOptionsModel.Headers = map[string]string{"x-custom-header": "x-custom-value"} + + // Invoke operation with a Context to test a timeout error + ctx, cancelFunc := context.WithTimeout(context.Background(), 80*time.Millisecond) + defer cancelFunc() + _, _, operationErr := drAutomationServiceService.GetApikeyWithContext(ctx, getApikeyOptionsModel) + Expect(operationErr).ToNot(BeNil()) + Expect(operationErr.Error()).To(ContainSubstring("deadline exceeded")) + + // Disable retries and test again + drAutomationServiceService.DisableRetries() + result, response, operationErr := drAutomationServiceService.GetApikey(getApikeyOptionsModel) + Expect(operationErr).To(BeNil()) + Expect(response).ToNot(BeNil()) + Expect(result).ToNot(BeNil()) + + // Re-test the timeout error with retries disabled + ctx, cancelFunc2 := context.WithTimeout(context.Background(), 80*time.Millisecond) + defer cancelFunc2() + _, _, operationErr = drAutomationServiceService.GetApikeyWithContext(ctx, getApikeyOptionsModel) + Expect(operationErr).ToNot(BeNil()) + Expect(operationErr.Error()).To(ContainSubstring("deadline exceeded")) + }) + AfterEach(func() { + testServer.Close() + }) + }) + Context(`Using mock server endpoint`, func() { + BeforeEach(func() { + testServer = httptest.NewServer(http.HandlerFunc(func(res http.ResponseWriter, req *http.Request) { + defer GinkgoRecover() + + // Verify the contents of the request + Expect(req.URL.EscapedPath()).To(Equal(getApikeyPath)) + Expect(req.Method).To(Equal("GET")) + + Expect(req.Header["Accept-Language"]).ToNot(BeNil()) + Expect(req.Header["Accept-Language"][0]).To(Equal(fmt.Sprintf("%v", "testString"))) + Expect(req.Header["If-None-Match"]).ToNot(BeNil()) + Expect(req.Header["If-None-Match"][0]).To(Equal(fmt.Sprintf("%v", "testString"))) + // Set mock response + res.Header().Set("Content-type", "application/json") + res.WriteHeader(200) + fmt.Fprintf(res, "%s", `{"description": "Key is valid.", "id": "crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::", "status": "Active"}`) + })) + }) + It(`Invoke GetApikey successfully`, func() { + drAutomationServiceService, serviceErr := drautomationservicev1.NewDrAutomationServiceV1(&drautomationservicev1.DrAutomationServiceV1Options{ + URL: testServer.URL, + Authenticator: &core.NoAuthAuthenticator{}, + }) + Expect(serviceErr).To(BeNil()) + Expect(drAutomationServiceService).ToNot(BeNil()) + + // Invoke operation with nil options model (negative test) + result, response, operationErr := drAutomationServiceService.GetApikey(nil) + Expect(operationErr).NotTo(BeNil()) + Expect(response).To(BeNil()) + Expect(result).To(BeNil()) + + // Construct an instance of the GetApikeyOptions model + getApikeyOptionsModel := new(drautomationservicev1.GetApikeyOptions) + getApikeyOptionsModel.InstanceID = core.StringPtr("crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::") + getApikeyOptionsModel.AcceptLanguage = core.StringPtr("testString") + getApikeyOptionsModel.IfNoneMatch = core.StringPtr("testString") + getApikeyOptionsModel.Headers = map[string]string{"x-custom-header": "x-custom-value"} + + // Invoke operation with valid options model (positive test) + result, response, operationErr = drAutomationServiceService.GetApikey(getApikeyOptionsModel) + Expect(operationErr).To(BeNil()) + Expect(response).ToNot(BeNil()) + Expect(result).ToNot(BeNil()) + + }) + It(`Invoke GetApikey with error: Operation validation and request error`, func() { + drAutomationServiceService, serviceErr := drautomationservicev1.NewDrAutomationServiceV1(&drautomationservicev1.DrAutomationServiceV1Options{ + URL: testServer.URL, + Authenticator: &core.NoAuthAuthenticator{}, + }) + Expect(serviceErr).To(BeNil()) + Expect(drAutomationServiceService).ToNot(BeNil()) + + // Construct an instance of the GetApikeyOptions model + getApikeyOptionsModel := new(drautomationservicev1.GetApikeyOptions) + getApikeyOptionsModel.InstanceID = core.StringPtr("crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::") + getApikeyOptionsModel.AcceptLanguage = core.StringPtr("testString") + getApikeyOptionsModel.IfNoneMatch = core.StringPtr("testString") + getApikeyOptionsModel.Headers = map[string]string{"x-custom-header": "x-custom-value"} + // Invoke operation with empty URL (negative test) + err := drAutomationServiceService.SetServiceURL("") + Expect(err).To(BeNil()) + result, response, operationErr := drAutomationServiceService.GetApikey(getApikeyOptionsModel) + Expect(operationErr).ToNot(BeNil()) + Expect(operationErr.Error()).To(ContainSubstring(core.ERRORMSG_SERVICE_URL_MISSING)) + Expect(response).To(BeNil()) + Expect(result).To(BeNil()) + // Construct a second instance of the GetApikeyOptions model with no property values + getApikeyOptionsModelNew := new(drautomationservicev1.GetApikeyOptions) + // Invoke operation with invalid model (negative test) + result, response, operationErr = drAutomationServiceService.GetApikey(getApikeyOptionsModelNew) + Expect(operationErr).ToNot(BeNil()) + Expect(response).To(BeNil()) + Expect(result).To(BeNil()) + }) + AfterEach(func() { + testServer.Close() + }) + }) + Context(`Using mock server endpoint with missing response body`, func() { + BeforeEach(func() { + testServer = httptest.NewServer(http.HandlerFunc(func(res http.ResponseWriter, req *http.Request) { + defer GinkgoRecover() + + // Set success status code with no respoonse body + res.WriteHeader(200) + })) + }) + It(`Invoke GetApikey successfully`, func() { + drAutomationServiceService, serviceErr := drautomationservicev1.NewDrAutomationServiceV1(&drautomationservicev1.DrAutomationServiceV1Options{ + URL: testServer.URL, + Authenticator: &core.NoAuthAuthenticator{}, + }) + Expect(serviceErr).To(BeNil()) + Expect(drAutomationServiceService).ToNot(BeNil()) + + // Construct an instance of the GetApikeyOptions model + getApikeyOptionsModel := new(drautomationservicev1.GetApikeyOptions) + getApikeyOptionsModel.InstanceID = core.StringPtr("crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::") + getApikeyOptionsModel.AcceptLanguage = core.StringPtr("testString") + getApikeyOptionsModel.IfNoneMatch = core.StringPtr("testString") + getApikeyOptionsModel.Headers = map[string]string{"x-custom-header": "x-custom-value"} + + // Invoke operation + result, response, operationErr := drAutomationServiceService.GetApikey(getApikeyOptionsModel) + Expect(operationErr).To(BeNil()) + Expect(response).ToNot(BeNil()) + + // Verify a nil result + Expect(result).To(BeNil()) + }) + AfterEach(func() { + testServer.Close() + }) + }) + }) + Describe(`CreateApikey(createApikeyOptions *CreateApikeyOptions) - Operation response error`, func() { + createApikeyPath := "/drautomation/v1/apikey/crn:v1:staging:public:power-dr-automation:global:a%2Fa123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::" + Context(`Using mock server endpoint with invalid JSON response`, func() { + BeforeEach(func() { + testServer = httptest.NewServer(http.HandlerFunc(func(res http.ResponseWriter, req *http.Request) { + defer GinkgoRecover() + + // Verify the contents of the request + Expect(req.URL.EscapedPath()).To(Equal(createApikeyPath)) + Expect(req.Method).To(Equal("POST")) + Expect(req.Header["Accept-Language"]).ToNot(BeNil()) + Expect(req.Header["Accept-Language"][0]).To(Equal(fmt.Sprintf("%v", "testString"))) + Expect(req.Header["If-None-Match"]).ToNot(BeNil()) + Expect(req.Header["If-None-Match"][0]).To(Equal(fmt.Sprintf("%v", "testString"))) + res.Header().Set("Content-type", "application/json") + res.WriteHeader(200) + fmt.Fprint(res, `} this is not valid json {`) + })) + }) + It(`Invoke CreateApikey with error: Operation response processing error`, func() { + drAutomationServiceService, serviceErr := drautomationservicev1.NewDrAutomationServiceV1(&drautomationservicev1.DrAutomationServiceV1Options{ + URL: testServer.URL, + Authenticator: &core.NoAuthAuthenticator{}, + }) + Expect(serviceErr).To(BeNil()) + Expect(drAutomationServiceService).ToNot(BeNil()) + + // Construct an instance of the CreateApikeyOptions model + createApikeyOptionsModel := new(drautomationservicev1.CreateApikeyOptions) + createApikeyOptionsModel.InstanceID = core.StringPtr("crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::") + createApikeyOptionsModel.APIKey = core.StringPtr("abcdefrg_izklmnop_fxbEED") + createApikeyOptionsModel.AcceptLanguage = core.StringPtr("testString") + createApikeyOptionsModel.IfNoneMatch = core.StringPtr("testString") + createApikeyOptionsModel.Headers = map[string]string{"x-custom-header": "x-custom-value"} + // Expect response parsing to fail since we are receiving a text/plain response + result, response, operationErr := drAutomationServiceService.CreateApikey(createApikeyOptionsModel) + Expect(operationErr).ToNot(BeNil()) + Expect(response).ToNot(BeNil()) + Expect(result).To(BeNil()) + + // Enable retries and test again + drAutomationServiceService.EnableRetries(0, 0) + result, response, operationErr = drAutomationServiceService.CreateApikey(createApikeyOptionsModel) + Expect(operationErr).ToNot(BeNil()) + Expect(response).ToNot(BeNil()) + Expect(result).To(BeNil()) + }) + AfterEach(func() { + testServer.Close() + }) + }) + }) + Describe(`CreateApikey(createApikeyOptions *CreateApikeyOptions)`, func() { + createApikeyPath := "/drautomation/v1/apikey/crn:v1:staging:public:power-dr-automation:global:a%2Fa123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::" + Context(`Using mock server endpoint with timeout`, func() { + BeforeEach(func() { + testServer = httptest.NewServer(http.HandlerFunc(func(res http.ResponseWriter, req *http.Request) { + defer GinkgoRecover() + + // Verify the contents of the request + Expect(req.URL.EscapedPath()).To(Equal(createApikeyPath)) + Expect(req.Method).To(Equal("POST")) + + // For gzip-disabled operation, verify Content-Encoding is not set. + Expect(req.Header.Get("Content-Encoding")).To(BeEmpty()) + + // If there is a body, then make sure we can read it + bodyBuf := new(bytes.Buffer) + if req.Header.Get("Content-Encoding") == "gzip" { + body, err := core.NewGzipDecompressionReader(req.Body) + Expect(err).To(BeNil()) + _, err = bodyBuf.ReadFrom(body) + Expect(err).To(BeNil()) + } else { + _, err := bodyBuf.ReadFrom(req.Body) + Expect(err).To(BeNil()) + } + fmt.Fprintf(GinkgoWriter, " Request body: %s", bodyBuf.String()) + + Expect(req.Header["Accept-Language"]).ToNot(BeNil()) + Expect(req.Header["Accept-Language"][0]).To(Equal(fmt.Sprintf("%v", "testString"))) + Expect(req.Header["If-None-Match"]).ToNot(BeNil()) + Expect(req.Header["If-None-Match"][0]).To(Equal(fmt.Sprintf("%v", "testString"))) + // Sleep a short time to support a timeout test + time.Sleep(100 * time.Millisecond) + + // Set mock response + res.Header().Set("Content-type", "application/json") + res.WriteHeader(200) + fmt.Fprintf(res, "%s", `{"description": "Key is valid.", "id": "crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::", "status": "Active"}`) + })) + }) + It(`Invoke CreateApikey successfully with retries`, func() { + drAutomationServiceService, serviceErr := drautomationservicev1.NewDrAutomationServiceV1(&drautomationservicev1.DrAutomationServiceV1Options{ + URL: testServer.URL, + Authenticator: &core.NoAuthAuthenticator{}, + }) + Expect(serviceErr).To(BeNil()) + Expect(drAutomationServiceService).ToNot(BeNil()) + drAutomationServiceService.EnableRetries(0, 0) + + // Construct an instance of the CreateApikeyOptions model + createApikeyOptionsModel := new(drautomationservicev1.CreateApikeyOptions) + createApikeyOptionsModel.InstanceID = core.StringPtr("crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::") + createApikeyOptionsModel.APIKey = core.StringPtr("abcdefrg_izklmnop_fxbEED") + createApikeyOptionsModel.AcceptLanguage = core.StringPtr("testString") + createApikeyOptionsModel.IfNoneMatch = core.StringPtr("testString") + createApikeyOptionsModel.Headers = map[string]string{"x-custom-header": "x-custom-value"} + + // Invoke operation with a Context to test a timeout error + ctx, cancelFunc := context.WithTimeout(context.Background(), 80*time.Millisecond) + defer cancelFunc() + _, _, operationErr := drAutomationServiceService.CreateApikeyWithContext(ctx, createApikeyOptionsModel) + Expect(operationErr).ToNot(BeNil()) + Expect(operationErr.Error()).To(ContainSubstring("deadline exceeded")) + + // Disable retries and test again + drAutomationServiceService.DisableRetries() + result, response, operationErr := drAutomationServiceService.CreateApikey(createApikeyOptionsModel) + Expect(operationErr).To(BeNil()) + Expect(response).ToNot(BeNil()) + Expect(result).ToNot(BeNil()) + + // Re-test the timeout error with retries disabled + ctx, cancelFunc2 := context.WithTimeout(context.Background(), 80*time.Millisecond) + defer cancelFunc2() + _, _, operationErr = drAutomationServiceService.CreateApikeyWithContext(ctx, createApikeyOptionsModel) + Expect(operationErr).ToNot(BeNil()) + Expect(operationErr.Error()).To(ContainSubstring("deadline exceeded")) + }) + AfterEach(func() { + testServer.Close() + }) + }) + Context(`Using mock server endpoint`, func() { + BeforeEach(func() { + testServer = httptest.NewServer(http.HandlerFunc(func(res http.ResponseWriter, req *http.Request) { + defer GinkgoRecover() + + // Verify the contents of the request + Expect(req.URL.EscapedPath()).To(Equal(createApikeyPath)) + Expect(req.Method).To(Equal("POST")) + + // For gzip-disabled operation, verify Content-Encoding is not set. + Expect(req.Header.Get("Content-Encoding")).To(BeEmpty()) + + // If there is a body, then make sure we can read it + bodyBuf := new(bytes.Buffer) + if req.Header.Get("Content-Encoding") == "gzip" { + body, err := core.NewGzipDecompressionReader(req.Body) + Expect(err).To(BeNil()) + _, err = bodyBuf.ReadFrom(body) + Expect(err).To(BeNil()) + } else { + _, err := bodyBuf.ReadFrom(req.Body) + Expect(err).To(BeNil()) + } + fmt.Fprintf(GinkgoWriter, " Request body: %s", bodyBuf.String()) + + Expect(req.Header["Accept-Language"]).ToNot(BeNil()) + Expect(req.Header["Accept-Language"][0]).To(Equal(fmt.Sprintf("%v", "testString"))) + Expect(req.Header["If-None-Match"]).ToNot(BeNil()) + Expect(req.Header["If-None-Match"][0]).To(Equal(fmt.Sprintf("%v", "testString"))) + // Set mock response + res.Header().Set("Content-type", "application/json") + res.WriteHeader(200) + fmt.Fprintf(res, "%s", `{"description": "Key is valid.", "id": "crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::", "status": "Active"}`) + })) + }) + It(`Invoke CreateApikey successfully`, func() { + drAutomationServiceService, serviceErr := drautomationservicev1.NewDrAutomationServiceV1(&drautomationservicev1.DrAutomationServiceV1Options{ + URL: testServer.URL, + Authenticator: &core.NoAuthAuthenticator{}, + }) + Expect(serviceErr).To(BeNil()) + Expect(drAutomationServiceService).ToNot(BeNil()) + + // Invoke operation with nil options model (negative test) + result, response, operationErr := drAutomationServiceService.CreateApikey(nil) + Expect(operationErr).NotTo(BeNil()) + Expect(response).To(BeNil()) + Expect(result).To(BeNil()) + + // Construct an instance of the CreateApikeyOptions model + createApikeyOptionsModel := new(drautomationservicev1.CreateApikeyOptions) + createApikeyOptionsModel.InstanceID = core.StringPtr("crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::") + createApikeyOptionsModel.APIKey = core.StringPtr("abcdefrg_izklmnop_fxbEED") + createApikeyOptionsModel.AcceptLanguage = core.StringPtr("testString") + createApikeyOptionsModel.IfNoneMatch = core.StringPtr("testString") + createApikeyOptionsModel.Headers = map[string]string{"x-custom-header": "x-custom-value"} + + // Invoke operation with valid options model (positive test) + result, response, operationErr = drAutomationServiceService.CreateApikey(createApikeyOptionsModel) + Expect(operationErr).To(BeNil()) + Expect(response).ToNot(BeNil()) + Expect(result).ToNot(BeNil()) + + }) + It(`Invoke CreateApikey with error: Operation validation and request error`, func() { + drAutomationServiceService, serviceErr := drautomationservicev1.NewDrAutomationServiceV1(&drautomationservicev1.DrAutomationServiceV1Options{ + URL: testServer.URL, + Authenticator: &core.NoAuthAuthenticator{}, + }) + Expect(serviceErr).To(BeNil()) + Expect(drAutomationServiceService).ToNot(BeNil()) + + // Construct an instance of the CreateApikeyOptions model + createApikeyOptionsModel := new(drautomationservicev1.CreateApikeyOptions) + createApikeyOptionsModel.InstanceID = core.StringPtr("crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::") + createApikeyOptionsModel.APIKey = core.StringPtr("abcdefrg_izklmnop_fxbEED") + createApikeyOptionsModel.AcceptLanguage = core.StringPtr("testString") + createApikeyOptionsModel.IfNoneMatch = core.StringPtr("testString") + createApikeyOptionsModel.Headers = map[string]string{"x-custom-header": "x-custom-value"} + // Invoke operation with empty URL (negative test) + err := drAutomationServiceService.SetServiceURL("") + Expect(err).To(BeNil()) + result, response, operationErr := drAutomationServiceService.CreateApikey(createApikeyOptionsModel) + Expect(operationErr).ToNot(BeNil()) + Expect(operationErr.Error()).To(ContainSubstring(core.ERRORMSG_SERVICE_URL_MISSING)) + Expect(response).To(BeNil()) + Expect(result).To(BeNil()) + // Construct a second instance of the CreateApikeyOptions model with no property values + createApikeyOptionsModelNew := new(drautomationservicev1.CreateApikeyOptions) + // Invoke operation with invalid model (negative test) + result, response, operationErr = drAutomationServiceService.CreateApikey(createApikeyOptionsModelNew) + Expect(operationErr).ToNot(BeNil()) + Expect(response).To(BeNil()) + Expect(result).To(BeNil()) + }) + AfterEach(func() { + testServer.Close() + }) + }) + Context(`Using mock server endpoint with missing response body`, func() { + BeforeEach(func() { + testServer = httptest.NewServer(http.HandlerFunc(func(res http.ResponseWriter, req *http.Request) { + defer GinkgoRecover() + + // Set success status code with no respoonse body + res.WriteHeader(200) + })) + }) + It(`Invoke CreateApikey successfully`, func() { + drAutomationServiceService, serviceErr := drautomationservicev1.NewDrAutomationServiceV1(&drautomationservicev1.DrAutomationServiceV1Options{ + URL: testServer.URL, + Authenticator: &core.NoAuthAuthenticator{}, + }) + Expect(serviceErr).To(BeNil()) + Expect(drAutomationServiceService).ToNot(BeNil()) + + // Construct an instance of the CreateApikeyOptions model + createApikeyOptionsModel := new(drautomationservicev1.CreateApikeyOptions) + createApikeyOptionsModel.InstanceID = core.StringPtr("crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::") + createApikeyOptionsModel.APIKey = core.StringPtr("abcdefrg_izklmnop_fxbEED") + createApikeyOptionsModel.AcceptLanguage = core.StringPtr("testString") + createApikeyOptionsModel.IfNoneMatch = core.StringPtr("testString") + createApikeyOptionsModel.Headers = map[string]string{"x-custom-header": "x-custom-value"} + + // Invoke operation + result, response, operationErr := drAutomationServiceService.CreateApikey(createApikeyOptionsModel) + Expect(operationErr).To(BeNil()) + Expect(response).ToNot(BeNil()) + + // Verify a nil result + Expect(result).To(BeNil()) + }) + AfterEach(func() { + testServer.Close() + }) + }) + }) + Describe(`UpdateApikey(updateApikeyOptions *UpdateApikeyOptions) - Operation response error`, func() { + updateApikeyPath := "/drautomation/v1/apikey/crn:v1:staging:public:power-dr-automation:global:a%2Fa123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::" + Context(`Using mock server endpoint with invalid JSON response`, func() { + BeforeEach(func() { + testServer = httptest.NewServer(http.HandlerFunc(func(res http.ResponseWriter, req *http.Request) { + defer GinkgoRecover() + + // Verify the contents of the request + Expect(req.URL.EscapedPath()).To(Equal(updateApikeyPath)) + Expect(req.Method).To(Equal("PUT")) + Expect(req.Header["Accept-Language"]).ToNot(BeNil()) + Expect(req.Header["Accept-Language"][0]).To(Equal(fmt.Sprintf("%v", "testString"))) + Expect(req.Header["If-None-Match"]).ToNot(BeNil()) + Expect(req.Header["If-None-Match"][0]).To(Equal(fmt.Sprintf("%v", "testString"))) + res.Header().Set("Content-type", "application/json") + res.WriteHeader(200) + fmt.Fprint(res, `} this is not valid json {`) + })) + }) + It(`Invoke UpdateApikey with error: Operation response processing error`, func() { + drAutomationServiceService, serviceErr := drautomationservicev1.NewDrAutomationServiceV1(&drautomationservicev1.DrAutomationServiceV1Options{ + URL: testServer.URL, + Authenticator: &core.NoAuthAuthenticator{}, + }) + Expect(serviceErr).To(BeNil()) + Expect(drAutomationServiceService).ToNot(BeNil()) + + // Construct an instance of the UpdateApikeyOptions model + updateApikeyOptionsModel := new(drautomationservicev1.UpdateApikeyOptions) + updateApikeyOptionsModel.InstanceID = core.StringPtr("crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::") + updateApikeyOptionsModel.APIKey = core.StringPtr("adfadfdsafsdfdsf") + updateApikeyOptionsModel.AcceptLanguage = core.StringPtr("testString") + updateApikeyOptionsModel.IfNoneMatch = core.StringPtr("testString") + updateApikeyOptionsModel.Headers = map[string]string{"x-custom-header": "x-custom-value"} + // Expect response parsing to fail since we are receiving a text/plain response + result, response, operationErr := drAutomationServiceService.UpdateApikey(updateApikeyOptionsModel) + Expect(operationErr).ToNot(BeNil()) + Expect(response).ToNot(BeNil()) + Expect(result).To(BeNil()) + + // Enable retries and test again + drAutomationServiceService.EnableRetries(0, 0) + result, response, operationErr = drAutomationServiceService.UpdateApikey(updateApikeyOptionsModel) + Expect(operationErr).ToNot(BeNil()) + Expect(response).ToNot(BeNil()) + Expect(result).To(BeNil()) + }) + AfterEach(func() { + testServer.Close() + }) + }) + }) + Describe(`UpdateApikey(updateApikeyOptions *UpdateApikeyOptions)`, func() { + updateApikeyPath := "/drautomation/v1/apikey/crn:v1:staging:public:power-dr-automation:global:a%2Fa123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::" + Context(`Using mock server endpoint with timeout`, func() { + BeforeEach(func() { + testServer = httptest.NewServer(http.HandlerFunc(func(res http.ResponseWriter, req *http.Request) { + defer GinkgoRecover() + + // Verify the contents of the request + Expect(req.URL.EscapedPath()).To(Equal(updateApikeyPath)) + Expect(req.Method).To(Equal("PUT")) + + // For gzip-disabled operation, verify Content-Encoding is not set. + Expect(req.Header.Get("Content-Encoding")).To(BeEmpty()) + + // If there is a body, then make sure we can read it + bodyBuf := new(bytes.Buffer) + if req.Header.Get("Content-Encoding") == "gzip" { + body, err := core.NewGzipDecompressionReader(req.Body) + Expect(err).To(BeNil()) + _, err = bodyBuf.ReadFrom(body) + Expect(err).To(BeNil()) + } else { + _, err := bodyBuf.ReadFrom(req.Body) + Expect(err).To(BeNil()) + } + fmt.Fprintf(GinkgoWriter, " Request body: %s", bodyBuf.String()) + + Expect(req.Header["Accept-Language"]).ToNot(BeNil()) + Expect(req.Header["Accept-Language"][0]).To(Equal(fmt.Sprintf("%v", "testString"))) + Expect(req.Header["If-None-Match"]).ToNot(BeNil()) + Expect(req.Header["If-None-Match"][0]).To(Equal(fmt.Sprintf("%v", "testString"))) + // Sleep a short time to support a timeout test + time.Sleep(100 * time.Millisecond) + + // Set mock response + res.Header().Set("Content-type", "application/json") + res.WriteHeader(200) + fmt.Fprintf(res, "%s", `{"description": "Key is valid.", "id": "crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::", "status": "Active"}`) + })) + }) + It(`Invoke UpdateApikey successfully with retries`, func() { + drAutomationServiceService, serviceErr := drautomationservicev1.NewDrAutomationServiceV1(&drautomationservicev1.DrAutomationServiceV1Options{ + URL: testServer.URL, + Authenticator: &core.NoAuthAuthenticator{}, + }) + Expect(serviceErr).To(BeNil()) + Expect(drAutomationServiceService).ToNot(BeNil()) + drAutomationServiceService.EnableRetries(0, 0) + + // Construct an instance of the UpdateApikeyOptions model + updateApikeyOptionsModel := new(drautomationservicev1.UpdateApikeyOptions) + updateApikeyOptionsModel.InstanceID = core.StringPtr("crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::") + updateApikeyOptionsModel.APIKey = core.StringPtr("adfadfdsafsdfdsf") + updateApikeyOptionsModel.AcceptLanguage = core.StringPtr("testString") + updateApikeyOptionsModel.IfNoneMatch = core.StringPtr("testString") + updateApikeyOptionsModel.Headers = map[string]string{"x-custom-header": "x-custom-value"} + + // Invoke operation with a Context to test a timeout error + ctx, cancelFunc := context.WithTimeout(context.Background(), 80*time.Millisecond) + defer cancelFunc() + _, _, operationErr := drAutomationServiceService.UpdateApikeyWithContext(ctx, updateApikeyOptionsModel) + Expect(operationErr).ToNot(BeNil()) + Expect(operationErr.Error()).To(ContainSubstring("deadline exceeded")) + + // Disable retries and test again + drAutomationServiceService.DisableRetries() + result, response, operationErr := drAutomationServiceService.UpdateApikey(updateApikeyOptionsModel) + Expect(operationErr).To(BeNil()) + Expect(response).ToNot(BeNil()) + Expect(result).ToNot(BeNil()) + + // Re-test the timeout error with retries disabled + ctx, cancelFunc2 := context.WithTimeout(context.Background(), 80*time.Millisecond) + defer cancelFunc2() + _, _, operationErr = drAutomationServiceService.UpdateApikeyWithContext(ctx, updateApikeyOptionsModel) + Expect(operationErr).ToNot(BeNil()) + Expect(operationErr.Error()).To(ContainSubstring("deadline exceeded")) + }) + AfterEach(func() { + testServer.Close() + }) + }) + Context(`Using mock server endpoint`, func() { + BeforeEach(func() { + testServer = httptest.NewServer(http.HandlerFunc(func(res http.ResponseWriter, req *http.Request) { + defer GinkgoRecover() + + // Verify the contents of the request + Expect(req.URL.EscapedPath()).To(Equal(updateApikeyPath)) + Expect(req.Method).To(Equal("PUT")) + + // For gzip-disabled operation, verify Content-Encoding is not set. + Expect(req.Header.Get("Content-Encoding")).To(BeEmpty()) + + // If there is a body, then make sure we can read it + bodyBuf := new(bytes.Buffer) + if req.Header.Get("Content-Encoding") == "gzip" { + body, err := core.NewGzipDecompressionReader(req.Body) + Expect(err).To(BeNil()) + _, err = bodyBuf.ReadFrom(body) + Expect(err).To(BeNil()) + } else { + _, err := bodyBuf.ReadFrom(req.Body) + Expect(err).To(BeNil()) + } + fmt.Fprintf(GinkgoWriter, " Request body: %s", bodyBuf.String()) + + Expect(req.Header["Accept-Language"]).ToNot(BeNil()) + Expect(req.Header["Accept-Language"][0]).To(Equal(fmt.Sprintf("%v", "testString"))) + Expect(req.Header["If-None-Match"]).ToNot(BeNil()) + Expect(req.Header["If-None-Match"][0]).To(Equal(fmt.Sprintf("%v", "testString"))) + // Set mock response + res.Header().Set("Content-type", "application/json") + res.WriteHeader(200) + fmt.Fprintf(res, "%s", `{"description": "Key is valid.", "id": "crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::", "status": "Active"}`) + })) + }) + It(`Invoke UpdateApikey successfully`, func() { + drAutomationServiceService, serviceErr := drautomationservicev1.NewDrAutomationServiceV1(&drautomationservicev1.DrAutomationServiceV1Options{ + URL: testServer.URL, + Authenticator: &core.NoAuthAuthenticator{}, + }) + Expect(serviceErr).To(BeNil()) + Expect(drAutomationServiceService).ToNot(BeNil()) + + // Invoke operation with nil options model (negative test) + result, response, operationErr := drAutomationServiceService.UpdateApikey(nil) + Expect(operationErr).NotTo(BeNil()) + Expect(response).To(BeNil()) + Expect(result).To(BeNil()) + + // Construct an instance of the UpdateApikeyOptions model + updateApikeyOptionsModel := new(drautomationservicev1.UpdateApikeyOptions) + updateApikeyOptionsModel.InstanceID = core.StringPtr("crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::") + updateApikeyOptionsModel.APIKey = core.StringPtr("adfadfdsafsdfdsf") + updateApikeyOptionsModel.AcceptLanguage = core.StringPtr("testString") + updateApikeyOptionsModel.IfNoneMatch = core.StringPtr("testString") + updateApikeyOptionsModel.Headers = map[string]string{"x-custom-header": "x-custom-value"} + + // Invoke operation with valid options model (positive test) + result, response, operationErr = drAutomationServiceService.UpdateApikey(updateApikeyOptionsModel) + Expect(operationErr).To(BeNil()) + Expect(response).ToNot(BeNil()) + Expect(result).ToNot(BeNil()) + + }) + It(`Invoke UpdateApikey with error: Operation validation and request error`, func() { + drAutomationServiceService, serviceErr := drautomationservicev1.NewDrAutomationServiceV1(&drautomationservicev1.DrAutomationServiceV1Options{ + URL: testServer.URL, + Authenticator: &core.NoAuthAuthenticator{}, + }) + Expect(serviceErr).To(BeNil()) + Expect(drAutomationServiceService).ToNot(BeNil()) + + // Construct an instance of the UpdateApikeyOptions model + updateApikeyOptionsModel := new(drautomationservicev1.UpdateApikeyOptions) + updateApikeyOptionsModel.InstanceID = core.StringPtr("crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::") + updateApikeyOptionsModel.APIKey = core.StringPtr("adfadfdsafsdfdsf") + updateApikeyOptionsModel.AcceptLanguage = core.StringPtr("testString") + updateApikeyOptionsModel.IfNoneMatch = core.StringPtr("testString") + updateApikeyOptionsModel.Headers = map[string]string{"x-custom-header": "x-custom-value"} + // Invoke operation with empty URL (negative test) + err := drAutomationServiceService.SetServiceURL("") + Expect(err).To(BeNil()) + result, response, operationErr := drAutomationServiceService.UpdateApikey(updateApikeyOptionsModel) + Expect(operationErr).ToNot(BeNil()) + Expect(operationErr.Error()).To(ContainSubstring(core.ERRORMSG_SERVICE_URL_MISSING)) + Expect(response).To(BeNil()) + Expect(result).To(BeNil()) + // Construct a second instance of the UpdateApikeyOptions model with no property values + updateApikeyOptionsModelNew := new(drautomationservicev1.UpdateApikeyOptions) + // Invoke operation with invalid model (negative test) + result, response, operationErr = drAutomationServiceService.UpdateApikey(updateApikeyOptionsModelNew) + Expect(operationErr).ToNot(BeNil()) + Expect(response).To(BeNil()) + Expect(result).To(BeNil()) + }) + AfterEach(func() { + testServer.Close() + }) + }) + Context(`Using mock server endpoint with missing response body`, func() { + BeforeEach(func() { + testServer = httptest.NewServer(http.HandlerFunc(func(res http.ResponseWriter, req *http.Request) { + defer GinkgoRecover() + + // Set success status code with no respoonse body + res.WriteHeader(200) + })) + }) + It(`Invoke UpdateApikey successfully`, func() { + drAutomationServiceService, serviceErr := drautomationservicev1.NewDrAutomationServiceV1(&drautomationservicev1.DrAutomationServiceV1Options{ + URL: testServer.URL, + Authenticator: &core.NoAuthAuthenticator{}, + }) + Expect(serviceErr).To(BeNil()) + Expect(drAutomationServiceService).ToNot(BeNil()) + + // Construct an instance of the UpdateApikeyOptions model + updateApikeyOptionsModel := new(drautomationservicev1.UpdateApikeyOptions) + updateApikeyOptionsModel.InstanceID = core.StringPtr("crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::") + updateApikeyOptionsModel.APIKey = core.StringPtr("adfadfdsafsdfdsf") + updateApikeyOptionsModel.AcceptLanguage = core.StringPtr("testString") + updateApikeyOptionsModel.IfNoneMatch = core.StringPtr("testString") + updateApikeyOptionsModel.Headers = map[string]string{"x-custom-header": "x-custom-value"} + + // Invoke operation + result, response, operationErr := drAutomationServiceService.UpdateApikey(updateApikeyOptionsModel) + Expect(operationErr).To(BeNil()) + Expect(response).ToNot(BeNil()) + + // Verify a nil result + Expect(result).To(BeNil()) + }) + AfterEach(func() { + testServer.Close() + }) + }) + }) + Describe(`GetDrGrsLocationPair(getDrGrsLocationPairOptions *GetDrGrsLocationPairOptions) - Operation response error`, func() { + getDrGrsLocationPairPath := "/drautomation/v1/dr_grs_location_pairs/crn:v1:staging:public:power-dr-automation:global:a%2Fa123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::" + Context(`Using mock server endpoint with invalid JSON response`, func() { + BeforeEach(func() { + testServer = httptest.NewServer(http.HandlerFunc(func(res http.ResponseWriter, req *http.Request) { + defer GinkgoRecover() + + // Verify the contents of the request + Expect(req.URL.EscapedPath()).To(Equal(getDrGrsLocationPairPath)) + Expect(req.Method).To(Equal("GET")) + Expect(req.Header["Accept-Language"]).ToNot(BeNil()) + Expect(req.Header["Accept-Language"][0]).To(Equal(fmt.Sprintf("%v", "testString"))) + Expect(req.Header["If-None-Match"]).ToNot(BeNil()) + Expect(req.Header["If-None-Match"][0]).To(Equal(fmt.Sprintf("%v", "testString"))) + res.Header().Set("Content-type", "application/json") + res.WriteHeader(200) + fmt.Fprint(res, `} this is not valid json {`) + })) + }) + It(`Invoke GetDrGrsLocationPair with error: Operation response processing error`, func() { + drAutomationServiceService, serviceErr := drautomationservicev1.NewDrAutomationServiceV1(&drautomationservicev1.DrAutomationServiceV1Options{ + URL: testServer.URL, + Authenticator: &core.NoAuthAuthenticator{}, + }) + Expect(serviceErr).To(BeNil()) + Expect(drAutomationServiceService).ToNot(BeNil()) + + // Construct an instance of the GetDrGrsLocationPairOptions model + getDrGrsLocationPairOptionsModel := new(drautomationservicev1.GetDrGrsLocationPairOptions) + getDrGrsLocationPairOptionsModel.InstanceID = core.StringPtr("crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::") + getDrGrsLocationPairOptionsModel.AcceptLanguage = core.StringPtr("testString") + getDrGrsLocationPairOptionsModel.IfNoneMatch = core.StringPtr("testString") + getDrGrsLocationPairOptionsModel.Headers = map[string]string{"x-custom-header": "x-custom-value"} + // Expect response parsing to fail since we are receiving a text/plain response + result, response, operationErr := drAutomationServiceService.GetDrGrsLocationPair(getDrGrsLocationPairOptionsModel) + Expect(operationErr).ToNot(BeNil()) + Expect(response).ToNot(BeNil()) + Expect(result).To(BeNil()) + + // Enable retries and test again + drAutomationServiceService.EnableRetries(0, 0) + result, response, operationErr = drAutomationServiceService.GetDrGrsLocationPair(getDrGrsLocationPairOptionsModel) + Expect(operationErr).ToNot(BeNil()) + Expect(response).ToNot(BeNil()) + Expect(result).To(BeNil()) + }) + AfterEach(func() { + testServer.Close() + }) + }) + }) + Describe(`GetDrGrsLocationPair(getDrGrsLocationPairOptions *GetDrGrsLocationPairOptions)`, func() { + getDrGrsLocationPairPath := "/drautomation/v1/dr_grs_location_pairs/crn:v1:staging:public:power-dr-automation:global:a%2Fa123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::" + Context(`Using mock server endpoint with timeout`, func() { + BeforeEach(func() { + testServer = httptest.NewServer(http.HandlerFunc(func(res http.ResponseWriter, req *http.Request) { + defer GinkgoRecover() + + // Verify the contents of the request + Expect(req.URL.EscapedPath()).To(Equal(getDrGrsLocationPairPath)) + Expect(req.Method).To(Equal("GET")) + + Expect(req.Header["Accept-Language"]).ToNot(BeNil()) + Expect(req.Header["Accept-Language"][0]).To(Equal(fmt.Sprintf("%v", "testString"))) + Expect(req.Header["If-None-Match"]).ToNot(BeNil()) + Expect(req.Header["If-None-Match"][0]).To(Equal(fmt.Sprintf("%v", "testString"))) + // Sleep a short time to support a timeout test + time.Sleep(100 * time.Millisecond) + + // Set mock response + res.Header().Set("Content-type", "application/json") + res.WriteHeader(200) + fmt.Fprintf(res, "%s", `{"location_pairs": {"mapKey": "Inner"}}`) + })) + }) + It(`Invoke GetDrGrsLocationPair successfully with retries`, func() { + drAutomationServiceService, serviceErr := drautomationservicev1.NewDrAutomationServiceV1(&drautomationservicev1.DrAutomationServiceV1Options{ + URL: testServer.URL, + Authenticator: &core.NoAuthAuthenticator{}, + }) + Expect(serviceErr).To(BeNil()) + Expect(drAutomationServiceService).ToNot(BeNil()) + drAutomationServiceService.EnableRetries(0, 0) + + // Construct an instance of the GetDrGrsLocationPairOptions model + getDrGrsLocationPairOptionsModel := new(drautomationservicev1.GetDrGrsLocationPairOptions) + getDrGrsLocationPairOptionsModel.InstanceID = core.StringPtr("crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::") + getDrGrsLocationPairOptionsModel.AcceptLanguage = core.StringPtr("testString") + getDrGrsLocationPairOptionsModel.IfNoneMatch = core.StringPtr("testString") + getDrGrsLocationPairOptionsModel.Headers = map[string]string{"x-custom-header": "x-custom-value"} + + // Invoke operation with a Context to test a timeout error + ctx, cancelFunc := context.WithTimeout(context.Background(), 80*time.Millisecond) + defer cancelFunc() + _, _, operationErr := drAutomationServiceService.GetDrGrsLocationPairWithContext(ctx, getDrGrsLocationPairOptionsModel) + Expect(operationErr).ToNot(BeNil()) + Expect(operationErr.Error()).To(ContainSubstring("deadline exceeded")) + + // Disable retries and test again + drAutomationServiceService.DisableRetries() + result, response, operationErr := drAutomationServiceService.GetDrGrsLocationPair(getDrGrsLocationPairOptionsModel) + Expect(operationErr).To(BeNil()) + Expect(response).ToNot(BeNil()) + Expect(result).ToNot(BeNil()) + + // Re-test the timeout error with retries disabled + ctx, cancelFunc2 := context.WithTimeout(context.Background(), 80*time.Millisecond) + defer cancelFunc2() + _, _, operationErr = drAutomationServiceService.GetDrGrsLocationPairWithContext(ctx, getDrGrsLocationPairOptionsModel) + Expect(operationErr).ToNot(BeNil()) + Expect(operationErr.Error()).To(ContainSubstring("deadline exceeded")) + }) + AfterEach(func() { + testServer.Close() + }) + }) + Context(`Using mock server endpoint`, func() { + BeforeEach(func() { + testServer = httptest.NewServer(http.HandlerFunc(func(res http.ResponseWriter, req *http.Request) { + defer GinkgoRecover() + + // Verify the contents of the request + Expect(req.URL.EscapedPath()).To(Equal(getDrGrsLocationPairPath)) + Expect(req.Method).To(Equal("GET")) + + Expect(req.Header["Accept-Language"]).ToNot(BeNil()) + Expect(req.Header["Accept-Language"][0]).To(Equal(fmt.Sprintf("%v", "testString"))) + Expect(req.Header["If-None-Match"]).ToNot(BeNil()) + Expect(req.Header["If-None-Match"][0]).To(Equal(fmt.Sprintf("%v", "testString"))) + // Set mock response + res.Header().Set("Content-type", "application/json") + res.WriteHeader(200) + fmt.Fprintf(res, "%s", `{"location_pairs": {"mapKey": "Inner"}}`) + })) + }) + It(`Invoke GetDrGrsLocationPair successfully`, func() { + drAutomationServiceService, serviceErr := drautomationservicev1.NewDrAutomationServiceV1(&drautomationservicev1.DrAutomationServiceV1Options{ + URL: testServer.URL, + Authenticator: &core.NoAuthAuthenticator{}, + }) + Expect(serviceErr).To(BeNil()) + Expect(drAutomationServiceService).ToNot(BeNil()) + + // Invoke operation with nil options model (negative test) + result, response, operationErr := drAutomationServiceService.GetDrGrsLocationPair(nil) + Expect(operationErr).NotTo(BeNil()) + Expect(response).To(BeNil()) + Expect(result).To(BeNil()) + + // Construct an instance of the GetDrGrsLocationPairOptions model + getDrGrsLocationPairOptionsModel := new(drautomationservicev1.GetDrGrsLocationPairOptions) + getDrGrsLocationPairOptionsModel.InstanceID = core.StringPtr("crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::") + getDrGrsLocationPairOptionsModel.AcceptLanguage = core.StringPtr("testString") + getDrGrsLocationPairOptionsModel.IfNoneMatch = core.StringPtr("testString") + getDrGrsLocationPairOptionsModel.Headers = map[string]string{"x-custom-header": "x-custom-value"} + + // Invoke operation with valid options model (positive test) + result, response, operationErr = drAutomationServiceService.GetDrGrsLocationPair(getDrGrsLocationPairOptionsModel) + Expect(operationErr).To(BeNil()) + Expect(response).ToNot(BeNil()) + Expect(result).ToNot(BeNil()) + + }) + It(`Invoke GetDrGrsLocationPair with error: Operation validation and request error`, func() { + drAutomationServiceService, serviceErr := drautomationservicev1.NewDrAutomationServiceV1(&drautomationservicev1.DrAutomationServiceV1Options{ + URL: testServer.URL, + Authenticator: &core.NoAuthAuthenticator{}, + }) + Expect(serviceErr).To(BeNil()) + Expect(drAutomationServiceService).ToNot(BeNil()) + + // Construct an instance of the GetDrGrsLocationPairOptions model + getDrGrsLocationPairOptionsModel := new(drautomationservicev1.GetDrGrsLocationPairOptions) + getDrGrsLocationPairOptionsModel.InstanceID = core.StringPtr("crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::") + getDrGrsLocationPairOptionsModel.AcceptLanguage = core.StringPtr("testString") + getDrGrsLocationPairOptionsModel.IfNoneMatch = core.StringPtr("testString") + getDrGrsLocationPairOptionsModel.Headers = map[string]string{"x-custom-header": "x-custom-value"} + // Invoke operation with empty URL (negative test) + err := drAutomationServiceService.SetServiceURL("") + Expect(err).To(BeNil()) + result, response, operationErr := drAutomationServiceService.GetDrGrsLocationPair(getDrGrsLocationPairOptionsModel) + Expect(operationErr).ToNot(BeNil()) + Expect(operationErr.Error()).To(ContainSubstring(core.ERRORMSG_SERVICE_URL_MISSING)) + Expect(response).To(BeNil()) + Expect(result).To(BeNil()) + // Construct a second instance of the GetDrGrsLocationPairOptions model with no property values + getDrGrsLocationPairOptionsModelNew := new(drautomationservicev1.GetDrGrsLocationPairOptions) + // Invoke operation with invalid model (negative test) + result, response, operationErr = drAutomationServiceService.GetDrGrsLocationPair(getDrGrsLocationPairOptionsModelNew) + Expect(operationErr).ToNot(BeNil()) + Expect(response).To(BeNil()) + Expect(result).To(BeNil()) + }) + AfterEach(func() { + testServer.Close() + }) + }) + Context(`Using mock server endpoint with missing response body`, func() { + BeforeEach(func() { + testServer = httptest.NewServer(http.HandlerFunc(func(res http.ResponseWriter, req *http.Request) { + defer GinkgoRecover() + + // Set success status code with no respoonse body + res.WriteHeader(200) + })) + }) + It(`Invoke GetDrGrsLocationPair successfully`, func() { + drAutomationServiceService, serviceErr := drautomationservicev1.NewDrAutomationServiceV1(&drautomationservicev1.DrAutomationServiceV1Options{ + URL: testServer.URL, + Authenticator: &core.NoAuthAuthenticator{}, + }) + Expect(serviceErr).To(BeNil()) + Expect(drAutomationServiceService).ToNot(BeNil()) + + // Construct an instance of the GetDrGrsLocationPairOptions model + getDrGrsLocationPairOptionsModel := new(drautomationservicev1.GetDrGrsLocationPairOptions) + getDrGrsLocationPairOptionsModel.InstanceID = core.StringPtr("crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::") + getDrGrsLocationPairOptionsModel.AcceptLanguage = core.StringPtr("testString") + getDrGrsLocationPairOptionsModel.IfNoneMatch = core.StringPtr("testString") + getDrGrsLocationPairOptionsModel.Headers = map[string]string{"x-custom-header": "x-custom-value"} + + // Invoke operation + result, response, operationErr := drAutomationServiceService.GetDrGrsLocationPair(getDrGrsLocationPairOptionsModel) + Expect(operationErr).To(BeNil()) + Expect(response).ToNot(BeNil()) + + // Verify a nil result + Expect(result).To(BeNil()) + }) + AfterEach(func() { + testServer.Close() + }) + }) + }) + Describe(`GetDrLocations(getDrLocationsOptions *GetDrLocationsOptions) - Operation response error`, func() { + getDrLocationsPath := "/drautomation/v1/dr_locations/crn:v1:staging:public:power-dr-automation:global:a%2Fa123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::" + Context(`Using mock server endpoint with invalid JSON response`, func() { + BeforeEach(func() { + testServer = httptest.NewServer(http.HandlerFunc(func(res http.ResponseWriter, req *http.Request) { + defer GinkgoRecover() + + // Verify the contents of the request + Expect(req.URL.EscapedPath()).To(Equal(getDrLocationsPath)) + Expect(req.Method).To(Equal("GET")) + Expect(req.Header["Accept-Language"]).ToNot(BeNil()) + Expect(req.Header["Accept-Language"][0]).To(Equal(fmt.Sprintf("%v", "testString"))) + Expect(req.Header["If-None-Match"]).ToNot(BeNil()) + Expect(req.Header["If-None-Match"][0]).To(Equal(fmt.Sprintf("%v", "testString"))) + res.Header().Set("Content-type", "application/json") + res.WriteHeader(200) + fmt.Fprint(res, `} this is not valid json {`) + })) + }) + It(`Invoke GetDrLocations with error: Operation response processing error`, func() { + drAutomationServiceService, serviceErr := drautomationservicev1.NewDrAutomationServiceV1(&drautomationservicev1.DrAutomationServiceV1Options{ + URL: testServer.URL, + Authenticator: &core.NoAuthAuthenticator{}, + }) + Expect(serviceErr).To(BeNil()) + Expect(drAutomationServiceService).ToNot(BeNil()) + + // Construct an instance of the GetDrLocationsOptions model + getDrLocationsOptionsModel := new(drautomationservicev1.GetDrLocationsOptions) + getDrLocationsOptionsModel.InstanceID = core.StringPtr("crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::") + getDrLocationsOptionsModel.AcceptLanguage = core.StringPtr("testString") + getDrLocationsOptionsModel.IfNoneMatch = core.StringPtr("testString") + getDrLocationsOptionsModel.Headers = map[string]string{"x-custom-header": "x-custom-value"} + // Expect response parsing to fail since we are receiving a text/plain response + result, response, operationErr := drAutomationServiceService.GetDrLocations(getDrLocationsOptionsModel) + Expect(operationErr).ToNot(BeNil()) + Expect(response).ToNot(BeNil()) + Expect(result).To(BeNil()) + + // Enable retries and test again + drAutomationServiceService.EnableRetries(0, 0) + result, response, operationErr = drAutomationServiceService.GetDrLocations(getDrLocationsOptionsModel) + Expect(operationErr).ToNot(BeNil()) + Expect(response).ToNot(BeNil()) + Expect(result).To(BeNil()) + }) + AfterEach(func() { + testServer.Close() + }) + }) + }) + Describe(`GetDrLocations(getDrLocationsOptions *GetDrLocationsOptions)`, func() { + getDrLocationsPath := "/drautomation/v1/dr_locations/crn:v1:staging:public:power-dr-automation:global:a%2Fa123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::" + Context(`Using mock server endpoint with timeout`, func() { + BeforeEach(func() { + testServer = httptest.NewServer(http.HandlerFunc(func(res http.ResponseWriter, req *http.Request) { + defer GinkgoRecover() + + // Verify the contents of the request + Expect(req.URL.EscapedPath()).To(Equal(getDrLocationsPath)) + Expect(req.Method).To(Equal("GET")) + + Expect(req.Header["Accept-Language"]).ToNot(BeNil()) + Expect(req.Header["Accept-Language"][0]).To(Equal(fmt.Sprintf("%v", "testString"))) + Expect(req.Header["If-None-Match"]).ToNot(BeNil()) + Expect(req.Header["If-None-Match"][0]).To(Equal(fmt.Sprintf("%v", "testString"))) + // Sleep a short time to support a timeout test + time.Sleep(100 * time.Millisecond) + + // Set mock response + res.Header().Set("Content-type", "application/json") + res.WriteHeader(200) + fmt.Fprintf(res, "%s", `{"dr_locations": [{"id": "loc123", "name": "US-East-1"}]}`) + })) + }) + It(`Invoke GetDrLocations successfully with retries`, func() { + drAutomationServiceService, serviceErr := drautomationservicev1.NewDrAutomationServiceV1(&drautomationservicev1.DrAutomationServiceV1Options{ + URL: testServer.URL, + Authenticator: &core.NoAuthAuthenticator{}, + }) + Expect(serviceErr).To(BeNil()) + Expect(drAutomationServiceService).ToNot(BeNil()) + drAutomationServiceService.EnableRetries(0, 0) + + // Construct an instance of the GetDrLocationsOptions model + getDrLocationsOptionsModel := new(drautomationservicev1.GetDrLocationsOptions) + getDrLocationsOptionsModel.InstanceID = core.StringPtr("crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::") + getDrLocationsOptionsModel.AcceptLanguage = core.StringPtr("testString") + getDrLocationsOptionsModel.IfNoneMatch = core.StringPtr("testString") + getDrLocationsOptionsModel.Headers = map[string]string{"x-custom-header": "x-custom-value"} + + // Invoke operation with a Context to test a timeout error + ctx, cancelFunc := context.WithTimeout(context.Background(), 80*time.Millisecond) + defer cancelFunc() + _, _, operationErr := drAutomationServiceService.GetDrLocationsWithContext(ctx, getDrLocationsOptionsModel) + Expect(operationErr).ToNot(BeNil()) + Expect(operationErr.Error()).To(ContainSubstring("deadline exceeded")) + + // Disable retries and test again + drAutomationServiceService.DisableRetries() + result, response, operationErr := drAutomationServiceService.GetDrLocations(getDrLocationsOptionsModel) + Expect(operationErr).To(BeNil()) + Expect(response).ToNot(BeNil()) + Expect(result).ToNot(BeNil()) + + // Re-test the timeout error with retries disabled + ctx, cancelFunc2 := context.WithTimeout(context.Background(), 80*time.Millisecond) + defer cancelFunc2() + _, _, operationErr = drAutomationServiceService.GetDrLocationsWithContext(ctx, getDrLocationsOptionsModel) + Expect(operationErr).ToNot(BeNil()) + Expect(operationErr.Error()).To(ContainSubstring("deadline exceeded")) + }) + AfterEach(func() { + testServer.Close() + }) + }) + Context(`Using mock server endpoint`, func() { + BeforeEach(func() { + testServer = httptest.NewServer(http.HandlerFunc(func(res http.ResponseWriter, req *http.Request) { + defer GinkgoRecover() + + // Verify the contents of the request + Expect(req.URL.EscapedPath()).To(Equal(getDrLocationsPath)) + Expect(req.Method).To(Equal("GET")) + + Expect(req.Header["Accept-Language"]).ToNot(BeNil()) + Expect(req.Header["Accept-Language"][0]).To(Equal(fmt.Sprintf("%v", "testString"))) + Expect(req.Header["If-None-Match"]).ToNot(BeNil()) + Expect(req.Header["If-None-Match"][0]).To(Equal(fmt.Sprintf("%v", "testString"))) + // Set mock response + res.Header().Set("Content-type", "application/json") + res.WriteHeader(200) + fmt.Fprintf(res, "%s", `{"dr_locations": [{"id": "loc123", "name": "US-East-1"}]}`) + })) + }) + It(`Invoke GetDrLocations successfully`, func() { + drAutomationServiceService, serviceErr := drautomationservicev1.NewDrAutomationServiceV1(&drautomationservicev1.DrAutomationServiceV1Options{ + URL: testServer.URL, + Authenticator: &core.NoAuthAuthenticator{}, + }) + Expect(serviceErr).To(BeNil()) + Expect(drAutomationServiceService).ToNot(BeNil()) + + // Invoke operation with nil options model (negative test) + result, response, operationErr := drAutomationServiceService.GetDrLocations(nil) + Expect(operationErr).NotTo(BeNil()) + Expect(response).To(BeNil()) + Expect(result).To(BeNil()) + + // Construct an instance of the GetDrLocationsOptions model + getDrLocationsOptionsModel := new(drautomationservicev1.GetDrLocationsOptions) + getDrLocationsOptionsModel.InstanceID = core.StringPtr("crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::") + getDrLocationsOptionsModel.AcceptLanguage = core.StringPtr("testString") + getDrLocationsOptionsModel.IfNoneMatch = core.StringPtr("testString") + getDrLocationsOptionsModel.Headers = map[string]string{"x-custom-header": "x-custom-value"} + + // Invoke operation with valid options model (positive test) + result, response, operationErr = drAutomationServiceService.GetDrLocations(getDrLocationsOptionsModel) + Expect(operationErr).To(BeNil()) + Expect(response).ToNot(BeNil()) + Expect(result).ToNot(BeNil()) + + }) + It(`Invoke GetDrLocations with error: Operation validation and request error`, func() { + drAutomationServiceService, serviceErr := drautomationservicev1.NewDrAutomationServiceV1(&drautomationservicev1.DrAutomationServiceV1Options{ + URL: testServer.URL, + Authenticator: &core.NoAuthAuthenticator{}, + }) + Expect(serviceErr).To(BeNil()) + Expect(drAutomationServiceService).ToNot(BeNil()) + + // Construct an instance of the GetDrLocationsOptions model + getDrLocationsOptionsModel := new(drautomationservicev1.GetDrLocationsOptions) + getDrLocationsOptionsModel.InstanceID = core.StringPtr("crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::") + getDrLocationsOptionsModel.AcceptLanguage = core.StringPtr("testString") + getDrLocationsOptionsModel.IfNoneMatch = core.StringPtr("testString") + getDrLocationsOptionsModel.Headers = map[string]string{"x-custom-header": "x-custom-value"} + // Invoke operation with empty URL (negative test) + err := drAutomationServiceService.SetServiceURL("") + Expect(err).To(BeNil()) + result, response, operationErr := drAutomationServiceService.GetDrLocations(getDrLocationsOptionsModel) + Expect(operationErr).ToNot(BeNil()) + Expect(operationErr.Error()).To(ContainSubstring(core.ERRORMSG_SERVICE_URL_MISSING)) + Expect(response).To(BeNil()) + Expect(result).To(BeNil()) + // Construct a second instance of the GetDrLocationsOptions model with no property values + getDrLocationsOptionsModelNew := new(drautomationservicev1.GetDrLocationsOptions) + // Invoke operation with invalid model (negative test) + result, response, operationErr = drAutomationServiceService.GetDrLocations(getDrLocationsOptionsModelNew) + Expect(operationErr).ToNot(BeNil()) + Expect(response).To(BeNil()) + Expect(result).To(BeNil()) + }) + AfterEach(func() { + testServer.Close() + }) + }) + Context(`Using mock server endpoint with missing response body`, func() { + BeforeEach(func() { + testServer = httptest.NewServer(http.HandlerFunc(func(res http.ResponseWriter, req *http.Request) { + defer GinkgoRecover() + + // Set success status code with no respoonse body + res.WriteHeader(200) + })) + }) + It(`Invoke GetDrLocations successfully`, func() { + drAutomationServiceService, serviceErr := drautomationservicev1.NewDrAutomationServiceV1(&drautomationservicev1.DrAutomationServiceV1Options{ + URL: testServer.URL, + Authenticator: &core.NoAuthAuthenticator{}, + }) + Expect(serviceErr).To(BeNil()) + Expect(drAutomationServiceService).ToNot(BeNil()) + + // Construct an instance of the GetDrLocationsOptions model + getDrLocationsOptionsModel := new(drautomationservicev1.GetDrLocationsOptions) + getDrLocationsOptionsModel.InstanceID = core.StringPtr("crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::") + getDrLocationsOptionsModel.AcceptLanguage = core.StringPtr("testString") + getDrLocationsOptionsModel.IfNoneMatch = core.StringPtr("testString") + getDrLocationsOptionsModel.Headers = map[string]string{"x-custom-header": "x-custom-value"} + + // Invoke operation + result, response, operationErr := drAutomationServiceService.GetDrLocations(getDrLocationsOptionsModel) + Expect(operationErr).To(BeNil()) + Expect(response).ToNot(BeNil()) + + // Verify a nil result + Expect(result).To(BeNil()) + }) + AfterEach(func() { + testServer.Close() + }) + }) + }) + Describe(`GetDrManagedVM(getDrManagedVMOptions *GetDrManagedVMOptions) - Operation response error`, func() { + getDrManagedVMPath := "/drautomation/v1/dr_managed_vms/crn:v1:staging:public:power-dr-automation:global:a%2Fa123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::" + Context(`Using mock server endpoint with invalid JSON response`, func() { + BeforeEach(func() { + testServer = httptest.NewServer(http.HandlerFunc(func(res http.ResponseWriter, req *http.Request) { + defer GinkgoRecover() + + // Verify the contents of the request + Expect(req.URL.EscapedPath()).To(Equal(getDrManagedVMPath)) + Expect(req.Method).To(Equal("GET")) + Expect(req.Header["Accept-Language"]).ToNot(BeNil()) + Expect(req.Header["Accept-Language"][0]).To(Equal(fmt.Sprintf("%v", "testString"))) + Expect(req.Header["If-None-Match"]).ToNot(BeNil()) + Expect(req.Header["If-None-Match"][0]).To(Equal(fmt.Sprintf("%v", "testString"))) + res.Header().Set("Content-type", "application/json") + res.WriteHeader(200) + fmt.Fprint(res, `} this is not valid json {`) + })) + }) + It(`Invoke GetDrManagedVM with error: Operation response processing error`, func() { + drAutomationServiceService, serviceErr := drautomationservicev1.NewDrAutomationServiceV1(&drautomationservicev1.DrAutomationServiceV1Options{ + URL: testServer.URL, + Authenticator: &core.NoAuthAuthenticator{}, + }) + Expect(serviceErr).To(BeNil()) + Expect(drAutomationServiceService).ToNot(BeNil()) + + // Construct an instance of the GetDrManagedVMOptions model + getDrManagedVMOptionsModel := new(drautomationservicev1.GetDrManagedVMOptions) + getDrManagedVMOptionsModel.InstanceID = core.StringPtr("crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::") + getDrManagedVMOptionsModel.AcceptLanguage = core.StringPtr("testString") + getDrManagedVMOptionsModel.IfNoneMatch = core.StringPtr("testString") + getDrManagedVMOptionsModel.Headers = map[string]string{"x-custom-header": "x-custom-value"} + // Expect response parsing to fail since we are receiving a text/plain response + result, response, operationErr := drAutomationServiceService.GetDrManagedVM(getDrManagedVMOptionsModel) + Expect(operationErr).ToNot(BeNil()) + Expect(response).ToNot(BeNil()) + Expect(result).To(BeNil()) + + // Enable retries and test again + drAutomationServiceService.EnableRetries(0, 0) + result, response, operationErr = drAutomationServiceService.GetDrManagedVM(getDrManagedVMOptionsModel) + Expect(operationErr).ToNot(BeNil()) + Expect(response).ToNot(BeNil()) + Expect(result).To(BeNil()) + }) + AfterEach(func() { + testServer.Close() + }) + }) + }) + Describe(`GetDrManagedVM(getDrManagedVMOptions *GetDrManagedVMOptions)`, func() { + getDrManagedVMPath := "/drautomation/v1/dr_managed_vms/crn:v1:staging:public:power-dr-automation:global:a%2Fa123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::" + Context(`Using mock server endpoint with timeout`, func() { + BeforeEach(func() { + testServer = httptest.NewServer(http.HandlerFunc(func(res http.ResponseWriter, req *http.Request) { + defer GinkgoRecover() + + // Verify the contents of the request + Expect(req.URL.EscapedPath()).To(Equal(getDrManagedVMPath)) + Expect(req.Method).To(Equal("GET")) + + Expect(req.Header["Accept-Language"]).ToNot(BeNil()) + Expect(req.Header["Accept-Language"][0]).To(Equal(fmt.Sprintf("%v", "testString"))) + Expect(req.Header["If-None-Match"]).ToNot(BeNil()) + Expect(req.Header["If-None-Match"][0]).To(Equal(fmt.Sprintf("%v", "testString"))) + // Sleep a short time to support a timeout test + time.Sleep(100 * time.Millisecond) + + // Set mock response + res.Header().Set("Content-type", "application/json") + res.WriteHeader(200) + fmt.Fprintf(res, "%s", `{"managed_vm_list": {"mapKey": {"core": "0.50", "dr_average_time": "10", "dr_region": "nyc02", "memory": "4", "region": "lon04", "vm_name": "example_vm", "workgroup_name": "Workgroup1", "workspace_name": "Workspace_dallas01"}}}`) + })) + }) + It(`Invoke GetDrManagedVM successfully with retries`, func() { + drAutomationServiceService, serviceErr := drautomationservicev1.NewDrAutomationServiceV1(&drautomationservicev1.DrAutomationServiceV1Options{ + URL: testServer.URL, + Authenticator: &core.NoAuthAuthenticator{}, + }) + Expect(serviceErr).To(BeNil()) + Expect(drAutomationServiceService).ToNot(BeNil()) + drAutomationServiceService.EnableRetries(0, 0) + + // Construct an instance of the GetDrManagedVMOptions model + getDrManagedVMOptionsModel := new(drautomationservicev1.GetDrManagedVMOptions) + getDrManagedVMOptionsModel.InstanceID = core.StringPtr("crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::") + getDrManagedVMOptionsModel.AcceptLanguage = core.StringPtr("testString") + getDrManagedVMOptionsModel.IfNoneMatch = core.StringPtr("testString") + getDrManagedVMOptionsModel.Headers = map[string]string{"x-custom-header": "x-custom-value"} + + // Invoke operation with a Context to test a timeout error + ctx, cancelFunc := context.WithTimeout(context.Background(), 80*time.Millisecond) + defer cancelFunc() + _, _, operationErr := drAutomationServiceService.GetDrManagedVMWithContext(ctx, getDrManagedVMOptionsModel) + Expect(operationErr).ToNot(BeNil()) + Expect(operationErr.Error()).To(ContainSubstring("deadline exceeded")) + + // Disable retries and test again + drAutomationServiceService.DisableRetries() + result, response, operationErr := drAutomationServiceService.GetDrManagedVM(getDrManagedVMOptionsModel) + Expect(operationErr).To(BeNil()) + Expect(response).ToNot(BeNil()) + Expect(result).ToNot(BeNil()) + + // Re-test the timeout error with retries disabled + ctx, cancelFunc2 := context.WithTimeout(context.Background(), 80*time.Millisecond) + defer cancelFunc2() + _, _, operationErr = drAutomationServiceService.GetDrManagedVMWithContext(ctx, getDrManagedVMOptionsModel) + Expect(operationErr).ToNot(BeNil()) + Expect(operationErr.Error()).To(ContainSubstring("deadline exceeded")) + }) + AfterEach(func() { + testServer.Close() + }) + }) + Context(`Using mock server endpoint`, func() { + BeforeEach(func() { + testServer = httptest.NewServer(http.HandlerFunc(func(res http.ResponseWriter, req *http.Request) { + defer GinkgoRecover() + + // Verify the contents of the request + Expect(req.URL.EscapedPath()).To(Equal(getDrManagedVMPath)) + Expect(req.Method).To(Equal("GET")) + + Expect(req.Header["Accept-Language"]).ToNot(BeNil()) + Expect(req.Header["Accept-Language"][0]).To(Equal(fmt.Sprintf("%v", "testString"))) + Expect(req.Header["If-None-Match"]).ToNot(BeNil()) + Expect(req.Header["If-None-Match"][0]).To(Equal(fmt.Sprintf("%v", "testString"))) + // Set mock response + res.Header().Set("Content-type", "application/json") + res.WriteHeader(200) + fmt.Fprintf(res, "%s", `{"managed_vm_list": {"mapKey": {"core": "0.50", "dr_average_time": "10", "dr_region": "nyc02", "memory": "4", "region": "lon04", "vm_name": "example_vm", "workgroup_name": "Workgroup1", "workspace_name": "Workspace_dallas01"}}}`) + })) + }) + It(`Invoke GetDrManagedVM successfully`, func() { + drAutomationServiceService, serviceErr := drautomationservicev1.NewDrAutomationServiceV1(&drautomationservicev1.DrAutomationServiceV1Options{ + URL: testServer.URL, + Authenticator: &core.NoAuthAuthenticator{}, + }) + Expect(serviceErr).To(BeNil()) + Expect(drAutomationServiceService).ToNot(BeNil()) + + // Invoke operation with nil options model (negative test) + result, response, operationErr := drAutomationServiceService.GetDrManagedVM(nil) + Expect(operationErr).NotTo(BeNil()) + Expect(response).To(BeNil()) + Expect(result).To(BeNil()) + + // Construct an instance of the GetDrManagedVMOptions model + getDrManagedVMOptionsModel := new(drautomationservicev1.GetDrManagedVMOptions) + getDrManagedVMOptionsModel.InstanceID = core.StringPtr("crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::") + getDrManagedVMOptionsModel.AcceptLanguage = core.StringPtr("testString") + getDrManagedVMOptionsModel.IfNoneMatch = core.StringPtr("testString") + getDrManagedVMOptionsModel.Headers = map[string]string{"x-custom-header": "x-custom-value"} + + // Invoke operation with valid options model (positive test) + result, response, operationErr = drAutomationServiceService.GetDrManagedVM(getDrManagedVMOptionsModel) + Expect(operationErr).To(BeNil()) + Expect(response).ToNot(BeNil()) + Expect(result).ToNot(BeNil()) + + }) + It(`Invoke GetDrManagedVM with error: Operation validation and request error`, func() { + drAutomationServiceService, serviceErr := drautomationservicev1.NewDrAutomationServiceV1(&drautomationservicev1.DrAutomationServiceV1Options{ + URL: testServer.URL, + Authenticator: &core.NoAuthAuthenticator{}, + }) + Expect(serviceErr).To(BeNil()) + Expect(drAutomationServiceService).ToNot(BeNil()) + + // Construct an instance of the GetDrManagedVMOptions model + getDrManagedVMOptionsModel := new(drautomationservicev1.GetDrManagedVMOptions) + getDrManagedVMOptionsModel.InstanceID = core.StringPtr("crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::") + getDrManagedVMOptionsModel.AcceptLanguage = core.StringPtr("testString") + getDrManagedVMOptionsModel.IfNoneMatch = core.StringPtr("testString") + getDrManagedVMOptionsModel.Headers = map[string]string{"x-custom-header": "x-custom-value"} + // Invoke operation with empty URL (negative test) + err := drAutomationServiceService.SetServiceURL("") + Expect(err).To(BeNil()) + result, response, operationErr := drAutomationServiceService.GetDrManagedVM(getDrManagedVMOptionsModel) + Expect(operationErr).ToNot(BeNil()) + Expect(operationErr.Error()).To(ContainSubstring(core.ERRORMSG_SERVICE_URL_MISSING)) + Expect(response).To(BeNil()) + Expect(result).To(BeNil()) + // Construct a second instance of the GetDrManagedVMOptions model with no property values + getDrManagedVMOptionsModelNew := new(drautomationservicev1.GetDrManagedVMOptions) + // Invoke operation with invalid model (negative test) + result, response, operationErr = drAutomationServiceService.GetDrManagedVM(getDrManagedVMOptionsModelNew) + Expect(operationErr).ToNot(BeNil()) + Expect(response).To(BeNil()) + Expect(result).To(BeNil()) + }) + AfterEach(func() { + testServer.Close() + }) + }) + Context(`Using mock server endpoint with missing response body`, func() { + BeforeEach(func() { + testServer = httptest.NewServer(http.HandlerFunc(func(res http.ResponseWriter, req *http.Request) { + defer GinkgoRecover() + + // Set success status code with no respoonse body + res.WriteHeader(200) + })) + }) + It(`Invoke GetDrManagedVM successfully`, func() { + drAutomationServiceService, serviceErr := drautomationservicev1.NewDrAutomationServiceV1(&drautomationservicev1.DrAutomationServiceV1Options{ + URL: testServer.URL, + Authenticator: &core.NoAuthAuthenticator{}, + }) + Expect(serviceErr).To(BeNil()) + Expect(drAutomationServiceService).ToNot(BeNil()) + + // Construct an instance of the GetDrManagedVMOptions model + getDrManagedVMOptionsModel := new(drautomationservicev1.GetDrManagedVMOptions) + getDrManagedVMOptionsModel.InstanceID = core.StringPtr("crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::") + getDrManagedVMOptionsModel.AcceptLanguage = core.StringPtr("testString") + getDrManagedVMOptionsModel.IfNoneMatch = core.StringPtr("testString") + getDrManagedVMOptionsModel.Headers = map[string]string{"x-custom-header": "x-custom-value"} + + // Invoke operation + result, response, operationErr := drAutomationServiceService.GetDrManagedVM(getDrManagedVMOptionsModel) + Expect(operationErr).To(BeNil()) + Expect(response).ToNot(BeNil()) + + // Verify a nil result + Expect(result).To(BeNil()) + }) + AfterEach(func() { + testServer.Close() + }) + }) + }) + Describe(`GetDrSummary(getDrSummaryOptions *GetDrSummaryOptions) - Operation response error`, func() { + getDrSummaryPath := "/drautomation/v1/dr_summary/crn:v1:staging:public:power-dr-automation:global:a%2Fa123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::" + Context(`Using mock server endpoint with invalid JSON response`, func() { + BeforeEach(func() { + testServer = httptest.NewServer(http.HandlerFunc(func(res http.ResponseWriter, req *http.Request) { + defer GinkgoRecover() + + // Verify the contents of the request + Expect(req.URL.EscapedPath()).To(Equal(getDrSummaryPath)) + Expect(req.Method).To(Equal("GET")) + Expect(req.Header["Accept-Language"]).ToNot(BeNil()) + Expect(req.Header["Accept-Language"][0]).To(Equal(fmt.Sprintf("%v", "testString"))) + Expect(req.Header["If-None-Match"]).ToNot(BeNil()) + Expect(req.Header["If-None-Match"][0]).To(Equal(fmt.Sprintf("%v", "testString"))) + res.Header().Set("Content-type", "application/json") + res.WriteHeader(200) + fmt.Fprint(res, `} this is not valid json {`) + })) + }) + It(`Invoke GetDrSummary with error: Operation response processing error`, func() { + drAutomationServiceService, serviceErr := drautomationservicev1.NewDrAutomationServiceV1(&drautomationservicev1.DrAutomationServiceV1Options{ + URL: testServer.URL, + Authenticator: &core.NoAuthAuthenticator{}, + }) + Expect(serviceErr).To(BeNil()) + Expect(drAutomationServiceService).ToNot(BeNil()) + + // Construct an instance of the GetDrSummaryOptions model + getDrSummaryOptionsModel := new(drautomationservicev1.GetDrSummaryOptions) + getDrSummaryOptionsModel.InstanceID = core.StringPtr("crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::") + getDrSummaryOptionsModel.AcceptLanguage = core.StringPtr("testString") + getDrSummaryOptionsModel.IfNoneMatch = core.StringPtr("testString") + getDrSummaryOptionsModel.Headers = map[string]string{"x-custom-header": "x-custom-value"} + // Expect response parsing to fail since we are receiving a text/plain response + result, response, operationErr := drAutomationServiceService.GetDrSummary(getDrSummaryOptionsModel) + Expect(operationErr).ToNot(BeNil()) + Expect(response).ToNot(BeNil()) + Expect(result).To(BeNil()) + + // Enable retries and test again + drAutomationServiceService.EnableRetries(0, 0) + result, response, operationErr = drAutomationServiceService.GetDrSummary(getDrSummaryOptionsModel) + Expect(operationErr).ToNot(BeNil()) + Expect(response).ToNot(BeNil()) + Expect(result).To(BeNil()) + }) + AfterEach(func() { + testServer.Close() + }) + }) + }) + Describe(`GetDrSummary(getDrSummaryOptions *GetDrSummaryOptions)`, func() { + getDrSummaryPath := "/drautomation/v1/dr_summary/crn:v1:staging:public:power-dr-automation:global:a%2Fa123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::" + Context(`Using mock server endpoint with timeout`, func() { + BeforeEach(func() { + testServer = httptest.NewServer(http.HandlerFunc(func(res http.ResponseWriter, req *http.Request) { + defer GinkgoRecover() + + // Verify the contents of the request + Expect(req.URL.EscapedPath()).To(Equal(getDrSummaryPath)) + Expect(req.Method).To(Equal("GET")) + + Expect(req.Header["Accept-Language"]).ToNot(BeNil()) + Expect(req.Header["Accept-Language"][0]).To(Equal(fmt.Sprintf("%v", "testString"))) + Expect(req.Header["If-None-Match"]).ToNot(BeNil()) + Expect(req.Header["If-None-Match"][0]).To(Equal(fmt.Sprintf("%v", "testString"))) + // Sleep a short time to support a timeout test + time.Sleep(100 * time.Millisecond) + + // Set mock response + res.Header().Set("Content-type", "application/json") + res.WriteHeader(200) + fmt.Fprintf(res, "%s", `{"managed_vm_list": {"anyKey": "anyValue"}, "orchestrator_details": {"last_updated_orchestrator_deployment_time": "2025-10-16T09:28:13.696Z", "last_updated_standby_orchestrator_deployment_time": "2025-10-16T09:28:13.696Z", "latest_orchestrator_time": "2025-10-16T09:28:13.696Z", "location_id": "LocationID", "mfa_enabled": "MfaEnabled", "orch_ext_connectivity_status": "OrchExtConnectivityStatus", "orch_standby_node_addition_status": "OrchStandbyNodeAdditionStatus", "orchestrator_cluster_message": "OrchestratorClusterMessage", "orchestrator_config_status": "OrchestratorConfigStatus", "orchestrator_group_leader": "OrchestratorGroupLeader", "orchestrator_location_type": "OrchestratorLocationType", "orchestrator_name": "OrchestratorName", "orchestrator_status": "OrchestratorStatus", "orchestrator_workspace_name": "OrchestratorWorkspaceName", "proxy_ip": "ProxyIP", "schematic_workspace_name": "SchematicWorkspaceName", "schematic_workspace_status": "SchematicWorkspaceStatus", "ssh_key_name": "SSHKeyName", "standby_orchestrator_name": "StandbyOrchestratorName", "standby_orchestrator_status": "StandbyOrchestratorStatus", "standby_orchestrator_workspace_name": "StandbyOrchestratorWorkspaceName", "transit_gateway_name": "TransitGatewayName", "vpc_name": "VPCName"}, "service_details": {"crn": "CRN", "deployment_name": "DeploymentName", "description": "Description", "orchestrator_ha": true, "plan_name": "PlanName", "primary_ip_address": "PrimaryIPAddress", "primary_orchestrator_dashboard_url": "PrimaryOrchestratorDashboardURL", "recovery_location": "RecoveryLocation", "resource_group": "ResourceGroup", "standby_description": "StandbyDescription", "standby_ip_address": "StandbyIPAddress", "standby_orchestrator_dashboard_url": "StandbyOrchestratorDashboardURL", "standby_status": "StandbyStatus", "status": "Status"}}`) + })) + }) + It(`Invoke GetDrSummary successfully with retries`, func() { + drAutomationServiceService, serviceErr := drautomationservicev1.NewDrAutomationServiceV1(&drautomationservicev1.DrAutomationServiceV1Options{ + URL: testServer.URL, + Authenticator: &core.NoAuthAuthenticator{}, + }) + Expect(serviceErr).To(BeNil()) + Expect(drAutomationServiceService).ToNot(BeNil()) + drAutomationServiceService.EnableRetries(0, 0) + + // Construct an instance of the GetDrSummaryOptions model + getDrSummaryOptionsModel := new(drautomationservicev1.GetDrSummaryOptions) + getDrSummaryOptionsModel.InstanceID = core.StringPtr("crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::") + getDrSummaryOptionsModel.AcceptLanguage = core.StringPtr("testString") + getDrSummaryOptionsModel.IfNoneMatch = core.StringPtr("testString") + getDrSummaryOptionsModel.Headers = map[string]string{"x-custom-header": "x-custom-value"} + + // Invoke operation with a Context to test a timeout error + ctx, cancelFunc := context.WithTimeout(context.Background(), 80*time.Millisecond) + defer cancelFunc() + _, _, operationErr := drAutomationServiceService.GetDrSummaryWithContext(ctx, getDrSummaryOptionsModel) + Expect(operationErr).ToNot(BeNil()) + Expect(operationErr.Error()).To(ContainSubstring("deadline exceeded")) + + // Disable retries and test again + drAutomationServiceService.DisableRetries() + result, response, operationErr := drAutomationServiceService.GetDrSummary(getDrSummaryOptionsModel) + Expect(operationErr).To(BeNil()) + Expect(response).ToNot(BeNil()) + Expect(result).ToNot(BeNil()) + + // Re-test the timeout error with retries disabled + ctx, cancelFunc2 := context.WithTimeout(context.Background(), 80*time.Millisecond) + defer cancelFunc2() + _, _, operationErr = drAutomationServiceService.GetDrSummaryWithContext(ctx, getDrSummaryOptionsModel) + Expect(operationErr).ToNot(BeNil()) + Expect(operationErr.Error()).To(ContainSubstring("deadline exceeded")) + }) + AfterEach(func() { + testServer.Close() + }) + }) + Context(`Using mock server endpoint`, func() { + BeforeEach(func() { + testServer = httptest.NewServer(http.HandlerFunc(func(res http.ResponseWriter, req *http.Request) { + defer GinkgoRecover() + + // Verify the contents of the request + Expect(req.URL.EscapedPath()).To(Equal(getDrSummaryPath)) + Expect(req.Method).To(Equal("GET")) + + Expect(req.Header["Accept-Language"]).ToNot(BeNil()) + Expect(req.Header["Accept-Language"][0]).To(Equal(fmt.Sprintf("%v", "testString"))) + Expect(req.Header["If-None-Match"]).ToNot(BeNil()) + Expect(req.Header["If-None-Match"][0]).To(Equal(fmt.Sprintf("%v", "testString"))) + // Set mock response + res.Header().Set("Content-type", "application/json") + res.WriteHeader(200) + fmt.Fprintf(res, "%s", `{"managed_vm_list": {"anyKey": "anyValue"}, "orchestrator_details": {"last_updated_orchestrator_deployment_time": "2025-10-16T09:28:13.696Z", "last_updated_standby_orchestrator_deployment_time": "2025-10-16T09:28:13.696Z", "latest_orchestrator_time": "2025-10-16T09:28:13.696Z", "location_id": "LocationID", "mfa_enabled": "MfaEnabled", "orch_ext_connectivity_status": "OrchExtConnectivityStatus", "orch_standby_node_addition_status": "OrchStandbyNodeAdditionStatus", "orchestrator_cluster_message": "OrchestratorClusterMessage", "orchestrator_config_status": "OrchestratorConfigStatus", "orchestrator_group_leader": "OrchestratorGroupLeader", "orchestrator_location_type": "OrchestratorLocationType", "orchestrator_name": "OrchestratorName", "orchestrator_status": "OrchestratorStatus", "orchestrator_workspace_name": "OrchestratorWorkspaceName", "proxy_ip": "ProxyIP", "schematic_workspace_name": "SchematicWorkspaceName", "schematic_workspace_status": "SchematicWorkspaceStatus", "ssh_key_name": "SSHKeyName", "standby_orchestrator_name": "StandbyOrchestratorName", "standby_orchestrator_status": "StandbyOrchestratorStatus", "standby_orchestrator_workspace_name": "StandbyOrchestratorWorkspaceName", "transit_gateway_name": "TransitGatewayName", "vpc_name": "VPCName"}, "service_details": {"crn": "CRN", "deployment_name": "DeploymentName", "description": "Description", "orchestrator_ha": true, "plan_name": "PlanName", "primary_ip_address": "PrimaryIPAddress", "primary_orchestrator_dashboard_url": "PrimaryOrchestratorDashboardURL", "recovery_location": "RecoveryLocation", "resource_group": "ResourceGroup", "standby_description": "StandbyDescription", "standby_ip_address": "StandbyIPAddress", "standby_orchestrator_dashboard_url": "StandbyOrchestratorDashboardURL", "standby_status": "StandbyStatus", "status": "Status"}}`) + })) + }) + It(`Invoke GetDrSummary successfully`, func() { + drAutomationServiceService, serviceErr := drautomationservicev1.NewDrAutomationServiceV1(&drautomationservicev1.DrAutomationServiceV1Options{ + URL: testServer.URL, + Authenticator: &core.NoAuthAuthenticator{}, + }) + Expect(serviceErr).To(BeNil()) + Expect(drAutomationServiceService).ToNot(BeNil()) + + // Invoke operation with nil options model (negative test) + result, response, operationErr := drAutomationServiceService.GetDrSummary(nil) + Expect(operationErr).NotTo(BeNil()) + Expect(response).To(BeNil()) + Expect(result).To(BeNil()) + + // Construct an instance of the GetDrSummaryOptions model + getDrSummaryOptionsModel := new(drautomationservicev1.GetDrSummaryOptions) + getDrSummaryOptionsModel.InstanceID = core.StringPtr("crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::") + getDrSummaryOptionsModel.AcceptLanguage = core.StringPtr("testString") + getDrSummaryOptionsModel.IfNoneMatch = core.StringPtr("testString") + getDrSummaryOptionsModel.Headers = map[string]string{"x-custom-header": "x-custom-value"} + + // Invoke operation with valid options model (positive test) + result, response, operationErr = drAutomationServiceService.GetDrSummary(getDrSummaryOptionsModel) + Expect(operationErr).To(BeNil()) + Expect(response).ToNot(BeNil()) + Expect(result).ToNot(BeNil()) + + }) + It(`Invoke GetDrSummary with error: Operation validation and request error`, func() { + drAutomationServiceService, serviceErr := drautomationservicev1.NewDrAutomationServiceV1(&drautomationservicev1.DrAutomationServiceV1Options{ + URL: testServer.URL, + Authenticator: &core.NoAuthAuthenticator{}, + }) + Expect(serviceErr).To(BeNil()) + Expect(drAutomationServiceService).ToNot(BeNil()) + + // Construct an instance of the GetDrSummaryOptions model + getDrSummaryOptionsModel := new(drautomationservicev1.GetDrSummaryOptions) + getDrSummaryOptionsModel.InstanceID = core.StringPtr("crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::") + getDrSummaryOptionsModel.AcceptLanguage = core.StringPtr("testString") + getDrSummaryOptionsModel.IfNoneMatch = core.StringPtr("testString") + getDrSummaryOptionsModel.Headers = map[string]string{"x-custom-header": "x-custom-value"} + // Invoke operation with empty URL (negative test) + err := drAutomationServiceService.SetServiceURL("") + Expect(err).To(BeNil()) + result, response, operationErr := drAutomationServiceService.GetDrSummary(getDrSummaryOptionsModel) + Expect(operationErr).ToNot(BeNil()) + Expect(operationErr.Error()).To(ContainSubstring(core.ERRORMSG_SERVICE_URL_MISSING)) + Expect(response).To(BeNil()) + Expect(result).To(BeNil()) + // Construct a second instance of the GetDrSummaryOptions model with no property values + getDrSummaryOptionsModelNew := new(drautomationservicev1.GetDrSummaryOptions) + // Invoke operation with invalid model (negative test) + result, response, operationErr = drAutomationServiceService.GetDrSummary(getDrSummaryOptionsModelNew) + Expect(operationErr).ToNot(BeNil()) + Expect(response).To(BeNil()) + Expect(result).To(BeNil()) + }) + AfterEach(func() { + testServer.Close() + }) + }) + Context(`Using mock server endpoint with missing response body`, func() { + BeforeEach(func() { + testServer = httptest.NewServer(http.HandlerFunc(func(res http.ResponseWriter, req *http.Request) { + defer GinkgoRecover() + + // Set success status code with no respoonse body + res.WriteHeader(200) + })) + }) + It(`Invoke GetDrSummary successfully`, func() { + drAutomationServiceService, serviceErr := drautomationservicev1.NewDrAutomationServiceV1(&drautomationservicev1.DrAutomationServiceV1Options{ + URL: testServer.URL, + Authenticator: &core.NoAuthAuthenticator{}, + }) + Expect(serviceErr).To(BeNil()) + Expect(drAutomationServiceService).ToNot(BeNil()) + + // Construct an instance of the GetDrSummaryOptions model + getDrSummaryOptionsModel := new(drautomationservicev1.GetDrSummaryOptions) + getDrSummaryOptionsModel.InstanceID = core.StringPtr("crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::") + getDrSummaryOptionsModel.AcceptLanguage = core.StringPtr("testString") + getDrSummaryOptionsModel.IfNoneMatch = core.StringPtr("testString") + getDrSummaryOptionsModel.Headers = map[string]string{"x-custom-header": "x-custom-value"} + + // Invoke operation + result, response, operationErr := drAutomationServiceService.GetDrSummary(getDrSummaryOptionsModel) + Expect(operationErr).To(BeNil()) + Expect(response).ToNot(BeNil()) + + // Verify a nil result + Expect(result).To(BeNil()) + }) + AfterEach(func() { + testServer.Close() + }) + }) + }) + Describe(`GetMachineType(getMachineTypeOptions *GetMachineTypeOptions) - Operation response error`, func() { + getMachineTypePath := "/drautomation/v1/machinetypes/crn:v1:staging:public:power-dr-automation:global:a%2Fa123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::" + Context(`Using mock server endpoint with invalid JSON response`, func() { + BeforeEach(func() { + testServer = httptest.NewServer(http.HandlerFunc(func(res http.ResponseWriter, req *http.Request) { + defer GinkgoRecover() + + // Verify the contents of the request + Expect(req.URL.EscapedPath()).To(Equal(getMachineTypePath)) + Expect(req.Method).To(Equal("GET")) + Expect(req.Header["Accept-Language"]).ToNot(BeNil()) + Expect(req.Header["Accept-Language"][0]).To(Equal(fmt.Sprintf("%v", "testString"))) + Expect(req.Header["If-None-Match"]).ToNot(BeNil()) + Expect(req.Header["If-None-Match"][0]).To(Equal(fmt.Sprintf("%v", "testString"))) + Expect(req.URL.Query()["primary_workspace_name"]).To(Equal([]string{"Test-workspace-wdc06"})) + Expect(req.URL.Query()["standby_workspace_name"]).To(Equal([]string{"Test-workspace-wdc07"})) + res.Header().Set("Content-type", "application/json") + res.WriteHeader(200) + fmt.Fprint(res, `} this is not valid json {`) + })) + }) + It(`Invoke GetMachineType with error: Operation response processing error`, func() { + drAutomationServiceService, serviceErr := drautomationservicev1.NewDrAutomationServiceV1(&drautomationservicev1.DrAutomationServiceV1Options{ + URL: testServer.URL, + Authenticator: &core.NoAuthAuthenticator{}, + }) + Expect(serviceErr).To(BeNil()) + Expect(drAutomationServiceService).ToNot(BeNil()) + + // Construct an instance of the GetMachineTypeOptions model + getMachineTypeOptionsModel := new(drautomationservicev1.GetMachineTypeOptions) + getMachineTypeOptionsModel.InstanceID = core.StringPtr("crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::") + getMachineTypeOptionsModel.PrimaryWorkspaceName = core.StringPtr("Test-workspace-wdc06") + getMachineTypeOptionsModel.AcceptLanguage = core.StringPtr("testString") + getMachineTypeOptionsModel.IfNoneMatch = core.StringPtr("testString") + getMachineTypeOptionsModel.StandbyWorkspaceName = core.StringPtr("Test-workspace-wdc07") + getMachineTypeOptionsModel.Headers = map[string]string{"x-custom-header": "x-custom-value"} + // Expect response parsing to fail since we are receiving a text/plain response + result, response, operationErr := drAutomationServiceService.GetMachineType(getMachineTypeOptionsModel) + Expect(operationErr).ToNot(BeNil()) + Expect(response).ToNot(BeNil()) + Expect(result).To(BeNil()) + + // Enable retries and test again + drAutomationServiceService.EnableRetries(0, 0) + result, response, operationErr = drAutomationServiceService.GetMachineType(getMachineTypeOptionsModel) + Expect(operationErr).ToNot(BeNil()) + Expect(response).ToNot(BeNil()) + Expect(result).To(BeNil()) + }) + AfterEach(func() { + testServer.Close() + }) + }) + }) + Describe(`GetMachineType(getMachineTypeOptions *GetMachineTypeOptions)`, func() { + getMachineTypePath := "/drautomation/v1/machinetypes/crn:v1:staging:public:power-dr-automation:global:a%2Fa123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::" + Context(`Using mock server endpoint with timeout`, func() { + BeforeEach(func() { + testServer = httptest.NewServer(http.HandlerFunc(func(res http.ResponseWriter, req *http.Request) { + defer GinkgoRecover() + + // Verify the contents of the request + Expect(req.URL.EscapedPath()).To(Equal(getMachineTypePath)) + Expect(req.Method).To(Equal("GET")) + + Expect(req.Header["Accept-Language"]).ToNot(BeNil()) + Expect(req.Header["Accept-Language"][0]).To(Equal(fmt.Sprintf("%v", "testString"))) + Expect(req.Header["If-None-Match"]).ToNot(BeNil()) + Expect(req.Header["If-None-Match"][0]).To(Equal(fmt.Sprintf("%v", "testString"))) + Expect(req.URL.Query()["primary_workspace_name"]).To(Equal([]string{"Test-workspace-wdc06"})) + Expect(req.URL.Query()["standby_workspace_name"]).To(Equal([]string{"Test-workspace-wdc07"})) + // Sleep a short time to support a timeout test + time.Sleep(100 * time.Millisecond) + + // Set mock response + res.Header().Set("Content-type", "application/json") + res.WriteHeader(200) + fmt.Fprintf(res, "%s", `{"workspaces": {"mapKey": ["Inner"]}}`) + })) + }) + It(`Invoke GetMachineType successfully with retries`, func() { + drAutomationServiceService, serviceErr := drautomationservicev1.NewDrAutomationServiceV1(&drautomationservicev1.DrAutomationServiceV1Options{ + URL: testServer.URL, + Authenticator: &core.NoAuthAuthenticator{}, + }) + Expect(serviceErr).To(BeNil()) + Expect(drAutomationServiceService).ToNot(BeNil()) + drAutomationServiceService.EnableRetries(0, 0) + + // Construct an instance of the GetMachineTypeOptions model + getMachineTypeOptionsModel := new(drautomationservicev1.GetMachineTypeOptions) + getMachineTypeOptionsModel.InstanceID = core.StringPtr("crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::") + getMachineTypeOptionsModel.PrimaryWorkspaceName = core.StringPtr("Test-workspace-wdc06") + getMachineTypeOptionsModel.AcceptLanguage = core.StringPtr("testString") + getMachineTypeOptionsModel.IfNoneMatch = core.StringPtr("testString") + getMachineTypeOptionsModel.StandbyWorkspaceName = core.StringPtr("Test-workspace-wdc07") + getMachineTypeOptionsModel.Headers = map[string]string{"x-custom-header": "x-custom-value"} + + // Invoke operation with a Context to test a timeout error + ctx, cancelFunc := context.WithTimeout(context.Background(), 80*time.Millisecond) + defer cancelFunc() + _, _, operationErr := drAutomationServiceService.GetMachineTypeWithContext(ctx, getMachineTypeOptionsModel) + Expect(operationErr).ToNot(BeNil()) + Expect(operationErr.Error()).To(ContainSubstring("deadline exceeded")) + + // Disable retries and test again + drAutomationServiceService.DisableRetries() + result, response, operationErr := drAutomationServiceService.GetMachineType(getMachineTypeOptionsModel) + Expect(operationErr).To(BeNil()) + Expect(response).ToNot(BeNil()) + Expect(result).ToNot(BeNil()) + + // Re-test the timeout error with retries disabled + ctx, cancelFunc2 := context.WithTimeout(context.Background(), 80*time.Millisecond) + defer cancelFunc2() + _, _, operationErr = drAutomationServiceService.GetMachineTypeWithContext(ctx, getMachineTypeOptionsModel) + Expect(operationErr).ToNot(BeNil()) + Expect(operationErr.Error()).To(ContainSubstring("deadline exceeded")) + }) + AfterEach(func() { + testServer.Close() + }) + }) + Context(`Using mock server endpoint`, func() { + BeforeEach(func() { + testServer = httptest.NewServer(http.HandlerFunc(func(res http.ResponseWriter, req *http.Request) { + defer GinkgoRecover() + + // Verify the contents of the request + Expect(req.URL.EscapedPath()).To(Equal(getMachineTypePath)) + Expect(req.Method).To(Equal("GET")) + + Expect(req.Header["Accept-Language"]).ToNot(BeNil()) + Expect(req.Header["Accept-Language"][0]).To(Equal(fmt.Sprintf("%v", "testString"))) + Expect(req.Header["If-None-Match"]).ToNot(BeNil()) + Expect(req.Header["If-None-Match"][0]).To(Equal(fmt.Sprintf("%v", "testString"))) + Expect(req.URL.Query()["primary_workspace_name"]).To(Equal([]string{"Test-workspace-wdc06"})) + Expect(req.URL.Query()["standby_workspace_name"]).To(Equal([]string{"Test-workspace-wdc07"})) + // Set mock response + res.Header().Set("Content-type", "application/json") + res.WriteHeader(200) + fmt.Fprintf(res, "%s", `{"workspaces": {"mapKey": ["Inner"]}}`) + })) + }) + It(`Invoke GetMachineType successfully`, func() { + drAutomationServiceService, serviceErr := drautomationservicev1.NewDrAutomationServiceV1(&drautomationservicev1.DrAutomationServiceV1Options{ + URL: testServer.URL, + Authenticator: &core.NoAuthAuthenticator{}, + }) + Expect(serviceErr).To(BeNil()) + Expect(drAutomationServiceService).ToNot(BeNil()) + + // Invoke operation with nil options model (negative test) + result, response, operationErr := drAutomationServiceService.GetMachineType(nil) + Expect(operationErr).NotTo(BeNil()) + Expect(response).To(BeNil()) + Expect(result).To(BeNil()) + + // Construct an instance of the GetMachineTypeOptions model + getMachineTypeOptionsModel := new(drautomationservicev1.GetMachineTypeOptions) + getMachineTypeOptionsModel.InstanceID = core.StringPtr("crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::") + getMachineTypeOptionsModel.PrimaryWorkspaceName = core.StringPtr("Test-workspace-wdc06") + getMachineTypeOptionsModel.AcceptLanguage = core.StringPtr("testString") + getMachineTypeOptionsModel.IfNoneMatch = core.StringPtr("testString") + getMachineTypeOptionsModel.StandbyWorkspaceName = core.StringPtr("Test-workspace-wdc07") + getMachineTypeOptionsModel.Headers = map[string]string{"x-custom-header": "x-custom-value"} + + // Invoke operation with valid options model (positive test) + result, response, operationErr = drAutomationServiceService.GetMachineType(getMachineTypeOptionsModel) + Expect(operationErr).To(BeNil()) + Expect(response).ToNot(BeNil()) + Expect(result).ToNot(BeNil()) + + }) + It(`Invoke GetMachineType with error: Operation validation and request error`, func() { + drAutomationServiceService, serviceErr := drautomationservicev1.NewDrAutomationServiceV1(&drautomationservicev1.DrAutomationServiceV1Options{ + URL: testServer.URL, + Authenticator: &core.NoAuthAuthenticator{}, + }) + Expect(serviceErr).To(BeNil()) + Expect(drAutomationServiceService).ToNot(BeNil()) + + // Construct an instance of the GetMachineTypeOptions model + getMachineTypeOptionsModel := new(drautomationservicev1.GetMachineTypeOptions) + getMachineTypeOptionsModel.InstanceID = core.StringPtr("crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::") + getMachineTypeOptionsModel.PrimaryWorkspaceName = core.StringPtr("Test-workspace-wdc06") + getMachineTypeOptionsModel.AcceptLanguage = core.StringPtr("testString") + getMachineTypeOptionsModel.IfNoneMatch = core.StringPtr("testString") + getMachineTypeOptionsModel.StandbyWorkspaceName = core.StringPtr("Test-workspace-wdc07") + getMachineTypeOptionsModel.Headers = map[string]string{"x-custom-header": "x-custom-value"} + // Invoke operation with empty URL (negative test) + err := drAutomationServiceService.SetServiceURL("") + Expect(err).To(BeNil()) + result, response, operationErr := drAutomationServiceService.GetMachineType(getMachineTypeOptionsModel) + Expect(operationErr).ToNot(BeNil()) + Expect(operationErr.Error()).To(ContainSubstring(core.ERRORMSG_SERVICE_URL_MISSING)) + Expect(response).To(BeNil()) + Expect(result).To(BeNil()) + // Construct a second instance of the GetMachineTypeOptions model with no property values + getMachineTypeOptionsModelNew := new(drautomationservicev1.GetMachineTypeOptions) + // Invoke operation with invalid model (negative test) + result, response, operationErr = drAutomationServiceService.GetMachineType(getMachineTypeOptionsModelNew) + Expect(operationErr).ToNot(BeNil()) + Expect(response).To(BeNil()) + Expect(result).To(BeNil()) + }) + AfterEach(func() { + testServer.Close() + }) + }) + Context(`Using mock server endpoint with missing response body`, func() { + BeforeEach(func() { + testServer = httptest.NewServer(http.HandlerFunc(func(res http.ResponseWriter, req *http.Request) { + defer GinkgoRecover() + + // Set success status code with no respoonse body + res.WriteHeader(200) + })) + }) + It(`Invoke GetMachineType successfully`, func() { + drAutomationServiceService, serviceErr := drautomationservicev1.NewDrAutomationServiceV1(&drautomationservicev1.DrAutomationServiceV1Options{ + URL: testServer.URL, + Authenticator: &core.NoAuthAuthenticator{}, + }) + Expect(serviceErr).To(BeNil()) + Expect(drAutomationServiceService).ToNot(BeNil()) + + // Construct an instance of the GetMachineTypeOptions model + getMachineTypeOptionsModel := new(drautomationservicev1.GetMachineTypeOptions) + getMachineTypeOptionsModel.InstanceID = core.StringPtr("crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::") + getMachineTypeOptionsModel.PrimaryWorkspaceName = core.StringPtr("Test-workspace-wdc06") + getMachineTypeOptionsModel.AcceptLanguage = core.StringPtr("testString") + getMachineTypeOptionsModel.IfNoneMatch = core.StringPtr("testString") + getMachineTypeOptionsModel.StandbyWorkspaceName = core.StringPtr("Test-workspace-wdc07") + getMachineTypeOptionsModel.Headers = map[string]string{"x-custom-header": "x-custom-value"} + + // Invoke operation + result, response, operationErr := drAutomationServiceService.GetMachineType(getMachineTypeOptionsModel) + Expect(operationErr).To(BeNil()) + Expect(response).ToNot(BeNil()) + + // Verify a nil result + Expect(result).To(BeNil()) + }) + AfterEach(func() { + testServer.Close() + }) + }) + }) + Describe(`GetPowervsWorkspaces(getPowervsWorkspacesOptions *GetPowervsWorkspacesOptions) - Operation response error`, func() { + getPowervsWorkspacesPath := "/drautomation/v1/powervs_workspaces/crn:v1:staging:public:power-dr-automation:global:a%2Fa123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::" + Context(`Using mock server endpoint with invalid JSON response`, func() { + BeforeEach(func() { + testServer = httptest.NewServer(http.HandlerFunc(func(res http.ResponseWriter, req *http.Request) { + defer GinkgoRecover() + + // Verify the contents of the request + Expect(req.URL.EscapedPath()).To(Equal(getPowervsWorkspacesPath)) + Expect(req.Method).To(Equal("GET")) + Expect(req.Header["If-None-Match"]).ToNot(BeNil()) + Expect(req.Header["If-None-Match"][0]).To(Equal(fmt.Sprintf("%v", "testString"))) + Expect(req.URL.Query()["location_id"]).To(Equal([]string{"testString"})) + res.Header().Set("Content-type", "application/json") + res.WriteHeader(200) + fmt.Fprint(res, `} this is not valid json {`) + })) + }) + It(`Invoke GetPowervsWorkspaces with error: Operation response processing error`, func() { + drAutomationServiceService, serviceErr := drautomationservicev1.NewDrAutomationServiceV1(&drautomationservicev1.DrAutomationServiceV1Options{ + URL: testServer.URL, + Authenticator: &core.NoAuthAuthenticator{}, + }) + Expect(serviceErr).To(BeNil()) + Expect(drAutomationServiceService).ToNot(BeNil()) + + // Construct an instance of the GetPowervsWorkspacesOptions model + getPowervsWorkspacesOptionsModel := new(drautomationservicev1.GetPowervsWorkspacesOptions) + getPowervsWorkspacesOptionsModel.InstanceID = core.StringPtr("crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::") + getPowervsWorkspacesOptionsModel.LocationID = core.StringPtr("testString") + getPowervsWorkspacesOptionsModel.IfNoneMatch = core.StringPtr("testString") + getPowervsWorkspacesOptionsModel.Headers = map[string]string{"x-custom-header": "x-custom-value"} + // Expect response parsing to fail since we are receiving a text/plain response + result, response, operationErr := drAutomationServiceService.GetPowervsWorkspaces(getPowervsWorkspacesOptionsModel) + Expect(operationErr).ToNot(BeNil()) + Expect(response).ToNot(BeNil()) + Expect(result).To(BeNil()) + + // Enable retries and test again + drAutomationServiceService.EnableRetries(0, 0) + result, response, operationErr = drAutomationServiceService.GetPowervsWorkspaces(getPowervsWorkspacesOptionsModel) + Expect(operationErr).ToNot(BeNil()) + Expect(response).ToNot(BeNil()) + Expect(result).To(BeNil()) + }) + AfterEach(func() { + testServer.Close() + }) + }) + }) + Describe(`GetPowervsWorkspaces(getPowervsWorkspacesOptions *GetPowervsWorkspacesOptions)`, func() { + getPowervsWorkspacesPath := "/drautomation/v1/powervs_workspaces/crn:v1:staging:public:power-dr-automation:global:a%2Fa123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::" + Context(`Using mock server endpoint with timeout`, func() { + BeforeEach(func() { + testServer = httptest.NewServer(http.HandlerFunc(func(res http.ResponseWriter, req *http.Request) { + defer GinkgoRecover() + + // Verify the contents of the request + Expect(req.URL.EscapedPath()).To(Equal(getPowervsWorkspacesPath)) + Expect(req.Method).To(Equal("GET")) + + Expect(req.Header["If-None-Match"]).ToNot(BeNil()) + Expect(req.Header["If-None-Match"][0]).To(Equal(fmt.Sprintf("%v", "testString"))) + Expect(req.URL.Query()["location_id"]).To(Equal([]string{"testString"})) + // Sleep a short time to support a timeout test + time.Sleep(100 * time.Millisecond) + + // Set mock response + res.Header().Set("Content-type", "application/json") + res.WriteHeader(200) + fmt.Fprintf(res, "%s", `{"dr_standby_workspace_description": "anyValue", "dr_standby_workspaces": [{"details": {"crn": "crn:v1:bluemix:public:power-iaas:lon06:a/094f4214c75941f991da601b001df1fe:b6297e60-d0fe-4e24-8b15-276cf0645737::"}, "id": "ID", "location": {"region": "lon06", "type": "data-center", "url": "https://lon.power-iaas.cloud.ibm.com"}, "name": "Name", "status": "Status"}], "dr_workspace_description": "anyValue", "dr_workspaces": [{"default": true, "details": {"crn": "crn:v1:bluemix:public:power-iaas:lon06:a/094f4214c75941f991da601b001df1fe:b6297e60-d0fe-4e24-8b15-276cf0645737::"}, "id": "ID", "location": {"region": "lon06", "type": "data-center", "url": "https://lon.power-iaas.cloud.ibm.com"}, "name": "Name", "status": "active"}]}`) + })) + }) + It(`Invoke GetPowervsWorkspaces successfully with retries`, func() { + drAutomationServiceService, serviceErr := drautomationservicev1.NewDrAutomationServiceV1(&drautomationservicev1.DrAutomationServiceV1Options{ + URL: testServer.URL, + Authenticator: &core.NoAuthAuthenticator{}, + }) + Expect(serviceErr).To(BeNil()) + Expect(drAutomationServiceService).ToNot(BeNil()) + drAutomationServiceService.EnableRetries(0, 0) + + // Construct an instance of the GetPowervsWorkspacesOptions model + getPowervsWorkspacesOptionsModel := new(drautomationservicev1.GetPowervsWorkspacesOptions) + getPowervsWorkspacesOptionsModel.InstanceID = core.StringPtr("crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::") + getPowervsWorkspacesOptionsModel.LocationID = core.StringPtr("testString") + getPowervsWorkspacesOptionsModel.IfNoneMatch = core.StringPtr("testString") + getPowervsWorkspacesOptionsModel.Headers = map[string]string{"x-custom-header": "x-custom-value"} + + // Invoke operation with a Context to test a timeout error + ctx, cancelFunc := context.WithTimeout(context.Background(), 80*time.Millisecond) + defer cancelFunc() + _, _, operationErr := drAutomationServiceService.GetPowervsWorkspacesWithContext(ctx, getPowervsWorkspacesOptionsModel) + Expect(operationErr).ToNot(BeNil()) + Expect(operationErr.Error()).To(ContainSubstring("deadline exceeded")) + + // Disable retries and test again + drAutomationServiceService.DisableRetries() + result, response, operationErr := drAutomationServiceService.GetPowervsWorkspaces(getPowervsWorkspacesOptionsModel) + Expect(operationErr).To(BeNil()) + Expect(response).ToNot(BeNil()) + Expect(result).ToNot(BeNil()) + + // Re-test the timeout error with retries disabled + ctx, cancelFunc2 := context.WithTimeout(context.Background(), 80*time.Millisecond) + defer cancelFunc2() + _, _, operationErr = drAutomationServiceService.GetPowervsWorkspacesWithContext(ctx, getPowervsWorkspacesOptionsModel) + Expect(operationErr).ToNot(BeNil()) + Expect(operationErr.Error()).To(ContainSubstring("deadline exceeded")) + }) + AfterEach(func() { + testServer.Close() + }) + }) + Context(`Using mock server endpoint`, func() { + BeforeEach(func() { + testServer = httptest.NewServer(http.HandlerFunc(func(res http.ResponseWriter, req *http.Request) { + defer GinkgoRecover() + + // Verify the contents of the request + Expect(req.URL.EscapedPath()).To(Equal(getPowervsWorkspacesPath)) + Expect(req.Method).To(Equal("GET")) + + Expect(req.Header["If-None-Match"]).ToNot(BeNil()) + Expect(req.Header["If-None-Match"][0]).To(Equal(fmt.Sprintf("%v", "testString"))) + Expect(req.URL.Query()["location_id"]).To(Equal([]string{"testString"})) + // Set mock response + res.Header().Set("Content-type", "application/json") + res.WriteHeader(200) + fmt.Fprintf(res, "%s", `{"dr_standby_workspace_description": "anyValue", "dr_standby_workspaces": [{"details": {"crn": "crn:v1:bluemix:public:power-iaas:lon06:a/094f4214c75941f991da601b001df1fe:b6297e60-d0fe-4e24-8b15-276cf0645737::"}, "id": "ID", "location": {"region": "lon06", "type": "data-center", "url": "https://lon.power-iaas.cloud.ibm.com"}, "name": "Name", "status": "Status"}], "dr_workspace_description": "anyValue", "dr_workspaces": [{"default": true, "details": {"crn": "crn:v1:bluemix:public:power-iaas:lon06:a/094f4214c75941f991da601b001df1fe:b6297e60-d0fe-4e24-8b15-276cf0645737::"}, "id": "ID", "location": {"region": "lon06", "type": "data-center", "url": "https://lon.power-iaas.cloud.ibm.com"}, "name": "Name", "status": "active"}]}`) + })) + }) + It(`Invoke GetPowervsWorkspaces successfully`, func() { + drAutomationServiceService, serviceErr := drautomationservicev1.NewDrAutomationServiceV1(&drautomationservicev1.DrAutomationServiceV1Options{ + URL: testServer.URL, + Authenticator: &core.NoAuthAuthenticator{}, + }) + Expect(serviceErr).To(BeNil()) + Expect(drAutomationServiceService).ToNot(BeNil()) + + // Invoke operation with nil options model (negative test) + result, response, operationErr := drAutomationServiceService.GetPowervsWorkspaces(nil) + Expect(operationErr).NotTo(BeNil()) + Expect(response).To(BeNil()) + Expect(result).To(BeNil()) + + // Construct an instance of the GetPowervsWorkspacesOptions model + getPowervsWorkspacesOptionsModel := new(drautomationservicev1.GetPowervsWorkspacesOptions) + getPowervsWorkspacesOptionsModel.InstanceID = core.StringPtr("crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::") + getPowervsWorkspacesOptionsModel.LocationID = core.StringPtr("testString") + getPowervsWorkspacesOptionsModel.IfNoneMatch = core.StringPtr("testString") + getPowervsWorkspacesOptionsModel.Headers = map[string]string{"x-custom-header": "x-custom-value"} + + // Invoke operation with valid options model (positive test) + result, response, operationErr = drAutomationServiceService.GetPowervsWorkspaces(getPowervsWorkspacesOptionsModel) + Expect(operationErr).To(BeNil()) + Expect(response).ToNot(BeNil()) + Expect(result).ToNot(BeNil()) + + }) + It(`Invoke GetPowervsWorkspaces with error: Operation validation and request error`, func() { + drAutomationServiceService, serviceErr := drautomationservicev1.NewDrAutomationServiceV1(&drautomationservicev1.DrAutomationServiceV1Options{ + URL: testServer.URL, + Authenticator: &core.NoAuthAuthenticator{}, + }) + Expect(serviceErr).To(BeNil()) + Expect(drAutomationServiceService).ToNot(BeNil()) + + // Construct an instance of the GetPowervsWorkspacesOptions model + getPowervsWorkspacesOptionsModel := new(drautomationservicev1.GetPowervsWorkspacesOptions) + getPowervsWorkspacesOptionsModel.InstanceID = core.StringPtr("crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::") + getPowervsWorkspacesOptionsModel.LocationID = core.StringPtr("testString") + getPowervsWorkspacesOptionsModel.IfNoneMatch = core.StringPtr("testString") + getPowervsWorkspacesOptionsModel.Headers = map[string]string{"x-custom-header": "x-custom-value"} + // Invoke operation with empty URL (negative test) + err := drAutomationServiceService.SetServiceURL("") + Expect(err).To(BeNil()) + result, response, operationErr := drAutomationServiceService.GetPowervsWorkspaces(getPowervsWorkspacesOptionsModel) + Expect(operationErr).ToNot(BeNil()) + Expect(operationErr.Error()).To(ContainSubstring(core.ERRORMSG_SERVICE_URL_MISSING)) + Expect(response).To(BeNil()) + Expect(result).To(BeNil()) + // Construct a second instance of the GetPowervsWorkspacesOptions model with no property values + getPowervsWorkspacesOptionsModelNew := new(drautomationservicev1.GetPowervsWorkspacesOptions) + // Invoke operation with invalid model (negative test) + result, response, operationErr = drAutomationServiceService.GetPowervsWorkspaces(getPowervsWorkspacesOptionsModelNew) + Expect(operationErr).ToNot(BeNil()) + Expect(response).To(BeNil()) + Expect(result).To(BeNil()) + }) + AfterEach(func() { + testServer.Close() + }) + }) + Context(`Using mock server endpoint with missing response body`, func() { + BeforeEach(func() { + testServer = httptest.NewServer(http.HandlerFunc(func(res http.ResponseWriter, req *http.Request) { + defer GinkgoRecover() + + // Set success status code with no respoonse body + res.WriteHeader(200) + })) + }) + It(`Invoke GetPowervsWorkspaces successfully`, func() { + drAutomationServiceService, serviceErr := drautomationservicev1.NewDrAutomationServiceV1(&drautomationservicev1.DrAutomationServiceV1Options{ + URL: testServer.URL, + Authenticator: &core.NoAuthAuthenticator{}, + }) + Expect(serviceErr).To(BeNil()) + Expect(drAutomationServiceService).ToNot(BeNil()) + + // Construct an instance of the GetPowervsWorkspacesOptions model + getPowervsWorkspacesOptionsModel := new(drautomationservicev1.GetPowervsWorkspacesOptions) + getPowervsWorkspacesOptionsModel.InstanceID = core.StringPtr("crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::") + getPowervsWorkspacesOptionsModel.LocationID = core.StringPtr("testString") + getPowervsWorkspacesOptionsModel.IfNoneMatch = core.StringPtr("testString") + getPowervsWorkspacesOptionsModel.Headers = map[string]string{"x-custom-header": "x-custom-value"} + + // Invoke operation + result, response, operationErr := drAutomationServiceService.GetPowervsWorkspaces(getPowervsWorkspacesOptionsModel) + Expect(operationErr).To(BeNil()) + Expect(response).ToNot(BeNil()) + + // Verify a nil result + Expect(result).To(BeNil()) + }) + AfterEach(func() { + testServer.Close() + }) + }) + }) + Describe(`GetManageDr(getManageDrOptions *GetManageDrOptions) - Operation response error`, func() { + getManageDrPath := "/drautomation/v1/manage_dr/crn:v1:staging:public:power-dr-automation:global:a%2Fa123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::" + Context(`Using mock server endpoint with invalid JSON response`, func() { + BeforeEach(func() { + testServer = httptest.NewServer(http.HandlerFunc(func(res http.ResponseWriter, req *http.Request) { + defer GinkgoRecover() + + // Verify the contents of the request + Expect(req.URL.EscapedPath()).To(Equal(getManageDrPath)) + Expect(req.Method).To(Equal("GET")) + Expect(req.Header["Accept-Language"]).ToNot(BeNil()) + Expect(req.Header["Accept-Language"][0]).To(Equal(fmt.Sprintf("%v", "testString"))) + Expect(req.Header["If-None-Match"]).ToNot(BeNil()) + Expect(req.Header["If-None-Match"][0]).To(Equal(fmt.Sprintf("%v", "testString"))) + res.Header().Set("Content-type", "application/json") + res.WriteHeader(200) + fmt.Fprint(res, `} this is not valid json {`) + })) + }) + It(`Invoke GetManageDr with error: Operation response processing error`, func() { + drAutomationServiceService, serviceErr := drautomationservicev1.NewDrAutomationServiceV1(&drautomationservicev1.DrAutomationServiceV1Options{ + URL: testServer.URL, + Authenticator: &core.NoAuthAuthenticator{}, + }) + Expect(serviceErr).To(BeNil()) + Expect(drAutomationServiceService).ToNot(BeNil()) + + // Construct an instance of the GetManageDrOptions model + getManageDrOptionsModel := new(drautomationservicev1.GetManageDrOptions) + getManageDrOptionsModel.InstanceID = core.StringPtr("crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::") + getManageDrOptionsModel.AcceptLanguage = core.StringPtr("testString") + getManageDrOptionsModel.IfNoneMatch = core.StringPtr("testString") + getManageDrOptionsModel.Headers = map[string]string{"x-custom-header": "x-custom-value"} + // Expect response parsing to fail since we are receiving a text/plain response + result, response, operationErr := drAutomationServiceService.GetManageDr(getManageDrOptionsModel) + Expect(operationErr).ToNot(BeNil()) + Expect(response).ToNot(BeNil()) + Expect(result).To(BeNil()) + + // Enable retries and test again + drAutomationServiceService.EnableRetries(0, 0) + result, response, operationErr = drAutomationServiceService.GetManageDr(getManageDrOptionsModel) + Expect(operationErr).ToNot(BeNil()) + Expect(response).ToNot(BeNil()) + Expect(result).To(BeNil()) + }) + AfterEach(func() { + testServer.Close() + }) + }) + }) + Describe(`GetManageDr(getManageDrOptions *GetManageDrOptions)`, func() { + getManageDrPath := "/drautomation/v1/manage_dr/crn:v1:staging:public:power-dr-automation:global:a%2Fa123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::" + Context(`Using mock server endpoint with timeout`, func() { + BeforeEach(func() { + testServer = httptest.NewServer(http.HandlerFunc(func(res http.ResponseWriter, req *http.Request) { + defer GinkgoRecover() + + // Verify the contents of the request + Expect(req.URL.EscapedPath()).To(Equal(getManageDrPath)) + Expect(req.Method).To(Equal("GET")) + + Expect(req.Header["Accept-Language"]).ToNot(BeNil()) + Expect(req.Header["Accept-Language"][0]).To(Equal(fmt.Sprintf("%v", "testString"))) + Expect(req.Header["If-None-Match"]).ToNot(BeNil()) + Expect(req.Header["If-None-Match"][0]).To(Equal(fmt.Sprintf("%v", "testString"))) + // Sleep a short time to support a timeout test + time.Sleep(100 * time.Millisecond) + + // Set mock response + res.Header().Set("Content-type", "application/json") + res.WriteHeader(200) + fmt.Fprintf(res, "%s", `{"dashboard_url": "https://power-dra.test.cloud.ibm.com/power-dra-ui?instance_id=crn:v1:bluemix:public:power-dr-automation:us-south:a/fe3c2ccd058e407c81e1dba2b5c0e0d6:e3d09875-bbf8-4d8a-b52c-abefb67a53c5::", "id": "crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::"}`) + })) + }) + It(`Invoke GetManageDr successfully with retries`, func() { + drAutomationServiceService, serviceErr := drautomationservicev1.NewDrAutomationServiceV1(&drautomationservicev1.DrAutomationServiceV1Options{ + URL: testServer.URL, + Authenticator: &core.NoAuthAuthenticator{}, + }) + Expect(serviceErr).To(BeNil()) + Expect(drAutomationServiceService).ToNot(BeNil()) + drAutomationServiceService.EnableRetries(0, 0) + + // Construct an instance of the GetManageDrOptions model + getManageDrOptionsModel := new(drautomationservicev1.GetManageDrOptions) + getManageDrOptionsModel.InstanceID = core.StringPtr("crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::") + getManageDrOptionsModel.AcceptLanguage = core.StringPtr("testString") + getManageDrOptionsModel.IfNoneMatch = core.StringPtr("testString") + getManageDrOptionsModel.Headers = map[string]string{"x-custom-header": "x-custom-value"} + + // Invoke operation with a Context to test a timeout error + ctx, cancelFunc := context.WithTimeout(context.Background(), 80*time.Millisecond) + defer cancelFunc() + _, _, operationErr := drAutomationServiceService.GetManageDrWithContext(ctx, getManageDrOptionsModel) + Expect(operationErr).ToNot(BeNil()) + Expect(operationErr.Error()).To(ContainSubstring("deadline exceeded")) + + // Disable retries and test again + drAutomationServiceService.DisableRetries() + result, response, operationErr := drAutomationServiceService.GetManageDr(getManageDrOptionsModel) + Expect(operationErr).To(BeNil()) + Expect(response).ToNot(BeNil()) + Expect(result).ToNot(BeNil()) + + // Re-test the timeout error with retries disabled + ctx, cancelFunc2 := context.WithTimeout(context.Background(), 80*time.Millisecond) + defer cancelFunc2() + _, _, operationErr = drAutomationServiceService.GetManageDrWithContext(ctx, getManageDrOptionsModel) + Expect(operationErr).ToNot(BeNil()) + Expect(operationErr.Error()).To(ContainSubstring("deadline exceeded")) + }) + AfterEach(func() { + testServer.Close() + }) + }) + Context(`Using mock server endpoint`, func() { + BeforeEach(func() { + testServer = httptest.NewServer(http.HandlerFunc(func(res http.ResponseWriter, req *http.Request) { + defer GinkgoRecover() + + // Verify the contents of the request + Expect(req.URL.EscapedPath()).To(Equal(getManageDrPath)) + Expect(req.Method).To(Equal("GET")) + + Expect(req.Header["Accept-Language"]).ToNot(BeNil()) + Expect(req.Header["Accept-Language"][0]).To(Equal(fmt.Sprintf("%v", "testString"))) + Expect(req.Header["If-None-Match"]).ToNot(BeNil()) + Expect(req.Header["If-None-Match"][0]).To(Equal(fmt.Sprintf("%v", "testString"))) + // Set mock response + res.Header().Set("Content-type", "application/json") + res.WriteHeader(200) + fmt.Fprintf(res, "%s", `{"dashboard_url": "https://power-dra.test.cloud.ibm.com/power-dra-ui?instance_id=crn:v1:bluemix:public:power-dr-automation:us-south:a/fe3c2ccd058e407c81e1dba2b5c0e0d6:e3d09875-bbf8-4d8a-b52c-abefb67a53c5::", "id": "crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::"}`) + })) + }) + It(`Invoke GetManageDr successfully`, func() { + drAutomationServiceService, serviceErr := drautomationservicev1.NewDrAutomationServiceV1(&drautomationservicev1.DrAutomationServiceV1Options{ + URL: testServer.URL, + Authenticator: &core.NoAuthAuthenticator{}, + }) + Expect(serviceErr).To(BeNil()) + Expect(drAutomationServiceService).ToNot(BeNil()) + + // Invoke operation with nil options model (negative test) + result, response, operationErr := drAutomationServiceService.GetManageDr(nil) + Expect(operationErr).NotTo(BeNil()) + Expect(response).To(BeNil()) + Expect(result).To(BeNil()) + + // Construct an instance of the GetManageDrOptions model + getManageDrOptionsModel := new(drautomationservicev1.GetManageDrOptions) + getManageDrOptionsModel.InstanceID = core.StringPtr("crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::") + getManageDrOptionsModel.AcceptLanguage = core.StringPtr("testString") + getManageDrOptionsModel.IfNoneMatch = core.StringPtr("testString") + getManageDrOptionsModel.Headers = map[string]string{"x-custom-header": "x-custom-value"} + + // Invoke operation with valid options model (positive test) + result, response, operationErr = drAutomationServiceService.GetManageDr(getManageDrOptionsModel) + Expect(operationErr).To(BeNil()) + Expect(response).ToNot(BeNil()) + Expect(result).ToNot(BeNil()) + + }) + It(`Invoke GetManageDr with error: Operation validation and request error`, func() { + drAutomationServiceService, serviceErr := drautomationservicev1.NewDrAutomationServiceV1(&drautomationservicev1.DrAutomationServiceV1Options{ + URL: testServer.URL, + Authenticator: &core.NoAuthAuthenticator{}, + }) + Expect(serviceErr).To(BeNil()) + Expect(drAutomationServiceService).ToNot(BeNil()) + + // Construct an instance of the GetManageDrOptions model + getManageDrOptionsModel := new(drautomationservicev1.GetManageDrOptions) + getManageDrOptionsModel.InstanceID = core.StringPtr("crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::") + getManageDrOptionsModel.AcceptLanguage = core.StringPtr("testString") + getManageDrOptionsModel.IfNoneMatch = core.StringPtr("testString") + getManageDrOptionsModel.Headers = map[string]string{"x-custom-header": "x-custom-value"} + // Invoke operation with empty URL (negative test) + err := drAutomationServiceService.SetServiceURL("") + Expect(err).To(BeNil()) + result, response, operationErr := drAutomationServiceService.GetManageDr(getManageDrOptionsModel) + Expect(operationErr).ToNot(BeNil()) + Expect(operationErr.Error()).To(ContainSubstring(core.ERRORMSG_SERVICE_URL_MISSING)) + Expect(response).To(BeNil()) + Expect(result).To(BeNil()) + // Construct a second instance of the GetManageDrOptions model with no property values + getManageDrOptionsModelNew := new(drautomationservicev1.GetManageDrOptions) + // Invoke operation with invalid model (negative test) + result, response, operationErr = drAutomationServiceService.GetManageDr(getManageDrOptionsModelNew) + Expect(operationErr).ToNot(BeNil()) + Expect(response).To(BeNil()) + Expect(result).To(BeNil()) + }) + AfterEach(func() { + testServer.Close() + }) + }) + Context(`Using mock server endpoint with missing response body`, func() { + BeforeEach(func() { + testServer = httptest.NewServer(http.HandlerFunc(func(res http.ResponseWriter, req *http.Request) { + defer GinkgoRecover() + + // Set success status code with no respoonse body + res.WriteHeader(200) + })) + }) + It(`Invoke GetManageDr successfully`, func() { + drAutomationServiceService, serviceErr := drautomationservicev1.NewDrAutomationServiceV1(&drautomationservicev1.DrAutomationServiceV1Options{ + URL: testServer.URL, + Authenticator: &core.NoAuthAuthenticator{}, + }) + Expect(serviceErr).To(BeNil()) + Expect(drAutomationServiceService).ToNot(BeNil()) + + // Construct an instance of the GetManageDrOptions model + getManageDrOptionsModel := new(drautomationservicev1.GetManageDrOptions) + getManageDrOptionsModel.InstanceID = core.StringPtr("crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::") + getManageDrOptionsModel.AcceptLanguage = core.StringPtr("testString") + getManageDrOptionsModel.IfNoneMatch = core.StringPtr("testString") + getManageDrOptionsModel.Headers = map[string]string{"x-custom-header": "x-custom-value"} + + // Invoke operation + result, response, operationErr := drAutomationServiceService.GetManageDr(getManageDrOptionsModel) + Expect(operationErr).To(BeNil()) + Expect(response).ToNot(BeNil()) + + // Verify a nil result + Expect(result).To(BeNil()) + }) + AfterEach(func() { + testServer.Close() + }) + }) + }) + Describe(`CreateManageDr(createManageDrOptions *CreateManageDrOptions) - Operation response error`, func() { + createManageDrPath := "/drautomation/v1/manage_dr/crn:v1:staging:public:power-dr-automation:global:a%2Fa123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::" + Context(`Using mock server endpoint with invalid JSON response`, func() { + BeforeEach(func() { + testServer = httptest.NewServer(http.HandlerFunc(func(res http.ResponseWriter, req *http.Request) { + defer GinkgoRecover() + + // Verify the contents of the request + Expect(req.URL.EscapedPath()).To(Equal(createManageDrPath)) + Expect(req.Method).To(Equal("POST")) + Expect(req.Header["Accept-Language"]).ToNot(BeNil()) + Expect(req.Header["Accept-Language"][0]).To(Equal(fmt.Sprintf("%v", "testString"))) + Expect(req.Header["If-None-Match"]).ToNot(BeNil()) + Expect(req.Header["If-None-Match"][0]).To(Equal(fmt.Sprintf("%v", "testString"))) + Expect(req.URL.Query()["stand_by_redeploy"]).To(Equal([]string{"testString"})) + // TODO: Add check for accepts_incomplete query parameter + res.Header().Set("Content-type", "application/json") + res.WriteHeader(200) + fmt.Fprint(res, `} this is not valid json {`) + })) + }) + It(`Invoke CreateManageDr with error: Operation response processing error`, func() { + drAutomationServiceService, serviceErr := drautomationservicev1.NewDrAutomationServiceV1(&drautomationservicev1.DrAutomationServiceV1Options{ + URL: testServer.URL, + Authenticator: &core.NoAuthAuthenticator{}, + }) + Expect(serviceErr).To(BeNil()) + Expect(drAutomationServiceService).ToNot(BeNil()) + + // Construct an instance of the CreateManageDrOptions model + createManageDrOptionsModel := new(drautomationservicev1.CreateManageDrOptions) + createManageDrOptionsModel.InstanceID = core.StringPtr("crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::") + createManageDrOptionsModel.APIKey = core.StringPtr("testString") + createManageDrOptionsModel.ClientID = core.StringPtr("d9f2c83a-97d2-4b14-bf62-8eaecc67a122") + createManageDrOptionsModel.ClientSecret = core.StringPtr("N8lQ4tP2xM1yT5rS8wK6qR9dD7vF1hU4sA3bE2jG0pL9oX7yC") + createManageDrOptionsModel.GUID = core.StringPtr("123e4567-e89b-12d3-a456-426614174000") + createManageDrOptionsModel.LocationID = core.StringPtr("dal10") + createManageDrOptionsModel.MachineType = core.StringPtr("bx2-4x16") + createManageDrOptionsModel.OrchestratorHa = core.BoolPtr(true) + createManageDrOptionsModel.OrchestratorLocationType = core.StringPtr("off-premises") + createManageDrOptionsModel.OrchestratorName = core.StringPtr("adminUser") + createManageDrOptionsModel.OrchestratorPassword = core.StringPtr("testString") + createManageDrOptionsModel.OrchestratorWorkspaceID = core.StringPtr("orch-workspace-01") + createManageDrOptionsModel.OrchestratorWorkspaceLocation = core.StringPtr("us-south") + createManageDrOptionsModel.ProxyIP = core.StringPtr("10.40.30.10:8888") + createManageDrOptionsModel.RegionID = core.StringPtr("us-south") + createManageDrOptionsModel.ResourceInstance = core.StringPtr("crn:v1:bluemix:public:resource-controller::res123") + createManageDrOptionsModel.SecondaryWorkspaceID = core.StringPtr("secondary-workspace789") + createManageDrOptionsModel.Secret = core.StringPtr("testString") + createManageDrOptionsModel.SecretGroup = core.StringPtr("default-secret-group") + createManageDrOptionsModel.SSHKeyName = core.StringPtr("my-ssh-key") + createManageDrOptionsModel.StandbyMachineType = core.StringPtr("bx2-8x32") + createManageDrOptionsModel.StandbyOrchestratorName = core.StringPtr("standbyAdmin") + createManageDrOptionsModel.StandbyOrchestratorWorkspaceID = core.StringPtr("orch-standby-02") + createManageDrOptionsModel.StandbyOrchestratorWorkspaceLocation = core.StringPtr("us-east") + createManageDrOptionsModel.StandbyTier = core.StringPtr("Premium") + createManageDrOptionsModel.TenantName = core.StringPtr("xxx.ibm.com") + createManageDrOptionsModel.Tier = core.StringPtr("Standard") + createManageDrOptionsModel.StandByRedeploy = core.StringPtr("testString") + createManageDrOptionsModel.AcceptLanguage = core.StringPtr("testString") + createManageDrOptionsModel.IfNoneMatch = core.StringPtr("testString") + createManageDrOptionsModel.AcceptsIncomplete = core.BoolPtr(true) + createManageDrOptionsModel.Headers = map[string]string{"x-custom-header": "x-custom-value"} + // Expect response parsing to fail since we are receiving a text/plain response + result, response, operationErr := drAutomationServiceService.CreateManageDr(createManageDrOptionsModel) + Expect(operationErr).ToNot(BeNil()) + Expect(response).ToNot(BeNil()) + Expect(result).To(BeNil()) + + // Enable retries and test again + drAutomationServiceService.EnableRetries(0, 0) + result, response, operationErr = drAutomationServiceService.CreateManageDr(createManageDrOptionsModel) + Expect(operationErr).ToNot(BeNil()) + Expect(response).ToNot(BeNil()) + Expect(result).To(BeNil()) + }) + AfterEach(func() { + testServer.Close() + }) + }) + }) + Describe(`CreateManageDr(createManageDrOptions *CreateManageDrOptions)`, func() { + createManageDrPath := "/drautomation/v1/manage_dr/crn:v1:staging:public:power-dr-automation:global:a%2Fa123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::" + Context(`Using mock server endpoint with timeout`, func() { + BeforeEach(func() { + testServer = httptest.NewServer(http.HandlerFunc(func(res http.ResponseWriter, req *http.Request) { + defer GinkgoRecover() + + // Verify the contents of the request + Expect(req.URL.EscapedPath()).To(Equal(createManageDrPath)) + Expect(req.Method).To(Equal("POST")) + + // For gzip-disabled operation, verify Content-Encoding is not set. + Expect(req.Header.Get("Content-Encoding")).To(BeEmpty()) + + // If there is a body, then make sure we can read it + bodyBuf := new(bytes.Buffer) + if req.Header.Get("Content-Encoding") == "gzip" { + body, err := core.NewGzipDecompressionReader(req.Body) + Expect(err).To(BeNil()) + _, err = bodyBuf.ReadFrom(body) + Expect(err).To(BeNil()) + } else { + _, err := bodyBuf.ReadFrom(req.Body) + Expect(err).To(BeNil()) + } + fmt.Fprintf(GinkgoWriter, " Request body: %s", bodyBuf.String()) + + Expect(req.Header["Accept-Language"]).ToNot(BeNil()) + Expect(req.Header["Accept-Language"][0]).To(Equal(fmt.Sprintf("%v", "testString"))) + Expect(req.Header["If-None-Match"]).ToNot(BeNil()) + Expect(req.Header["If-None-Match"][0]).To(Equal(fmt.Sprintf("%v", "testString"))) + Expect(req.URL.Query()["stand_by_redeploy"]).To(Equal([]string{"testString"})) + // TODO: Add check for accepts_incomplete query parameter + // Sleep a short time to support a timeout test + time.Sleep(100 * time.Millisecond) + + // Set mock response + res.Header().Set("Content-type", "application/json") + res.WriteHeader(200) + fmt.Fprintf(res, "%s", `{"dashboard_url": "https://power-dra.test.cloud.ibm.com/power-dra-ui?instance_id=crn:v1:bluemix:public:power-dr-automation:us-south:a/fe3c2ccd058e407c81e1dba2b5c0e0d6:e3d09875-bbf8-4d8a-b52c-abefb67a53c5::", "id": "crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::"}`) + })) + }) + It(`Invoke CreateManageDr successfully with retries`, func() { + drAutomationServiceService, serviceErr := drautomationservicev1.NewDrAutomationServiceV1(&drautomationservicev1.DrAutomationServiceV1Options{ + URL: testServer.URL, + Authenticator: &core.NoAuthAuthenticator{}, + }) + Expect(serviceErr).To(BeNil()) + Expect(drAutomationServiceService).ToNot(BeNil()) + drAutomationServiceService.EnableRetries(0, 0) + + // Construct an instance of the CreateManageDrOptions model + createManageDrOptionsModel := new(drautomationservicev1.CreateManageDrOptions) + createManageDrOptionsModel.InstanceID = core.StringPtr("crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::") + createManageDrOptionsModel.APIKey = core.StringPtr("testString") + createManageDrOptionsModel.ClientID = core.StringPtr("d9f2c83a-97d2-4b14-bf62-8eaecc67a122") + createManageDrOptionsModel.ClientSecret = core.StringPtr("N8lQ4tP2xM1yT5rS8wK6qR9dD7vF1hU4sA3bE2jG0pL9oX7yC") + createManageDrOptionsModel.GUID = core.StringPtr("123e4567-e89b-12d3-a456-426614174000") + createManageDrOptionsModel.LocationID = core.StringPtr("dal10") + createManageDrOptionsModel.MachineType = core.StringPtr("bx2-4x16") + createManageDrOptionsModel.OrchestratorHa = core.BoolPtr(true) + createManageDrOptionsModel.OrchestratorLocationType = core.StringPtr("off-premises") + createManageDrOptionsModel.OrchestratorName = core.StringPtr("adminUser") + createManageDrOptionsModel.OrchestratorPassword = core.StringPtr("testString") + createManageDrOptionsModel.OrchestratorWorkspaceID = core.StringPtr("orch-workspace-01") + createManageDrOptionsModel.OrchestratorWorkspaceLocation = core.StringPtr("us-south") + createManageDrOptionsModel.ProxyIP = core.StringPtr("10.40.30.10:8888") + createManageDrOptionsModel.RegionID = core.StringPtr("us-south") + createManageDrOptionsModel.ResourceInstance = core.StringPtr("crn:v1:bluemix:public:resource-controller::res123") + createManageDrOptionsModel.SecondaryWorkspaceID = core.StringPtr("secondary-workspace789") + createManageDrOptionsModel.Secret = core.StringPtr("testString") + createManageDrOptionsModel.SecretGroup = core.StringPtr("default-secret-group") + createManageDrOptionsModel.SSHKeyName = core.StringPtr("my-ssh-key") + createManageDrOptionsModel.StandbyMachineType = core.StringPtr("bx2-8x32") + createManageDrOptionsModel.StandbyOrchestratorName = core.StringPtr("standbyAdmin") + createManageDrOptionsModel.StandbyOrchestratorWorkspaceID = core.StringPtr("orch-standby-02") + createManageDrOptionsModel.StandbyOrchestratorWorkspaceLocation = core.StringPtr("us-east") + createManageDrOptionsModel.StandbyTier = core.StringPtr("Premium") + createManageDrOptionsModel.TenantName = core.StringPtr("xxx.ibm.com") + createManageDrOptionsModel.Tier = core.StringPtr("Standard") + createManageDrOptionsModel.StandByRedeploy = core.StringPtr("testString") + createManageDrOptionsModel.AcceptLanguage = core.StringPtr("testString") + createManageDrOptionsModel.IfNoneMatch = core.StringPtr("testString") + createManageDrOptionsModel.AcceptsIncomplete = core.BoolPtr(true) + createManageDrOptionsModel.Headers = map[string]string{"x-custom-header": "x-custom-value"} + + // Invoke operation with a Context to test a timeout error + ctx, cancelFunc := context.WithTimeout(context.Background(), 80*time.Millisecond) + defer cancelFunc() + _, _, operationErr := drAutomationServiceService.CreateManageDrWithContext(ctx, createManageDrOptionsModel) + Expect(operationErr).ToNot(BeNil()) + Expect(operationErr.Error()).To(ContainSubstring("deadline exceeded")) + + // Disable retries and test again + drAutomationServiceService.DisableRetries() + result, response, operationErr := drAutomationServiceService.CreateManageDr(createManageDrOptionsModel) + Expect(operationErr).To(BeNil()) + Expect(response).ToNot(BeNil()) + Expect(result).ToNot(BeNil()) + + // Re-test the timeout error with retries disabled + ctx, cancelFunc2 := context.WithTimeout(context.Background(), 80*time.Millisecond) + defer cancelFunc2() + _, _, operationErr = drAutomationServiceService.CreateManageDrWithContext(ctx, createManageDrOptionsModel) + Expect(operationErr).ToNot(BeNil()) + Expect(operationErr.Error()).To(ContainSubstring("deadline exceeded")) + }) + AfterEach(func() { + testServer.Close() + }) + }) + Context(`Using mock server endpoint`, func() { + BeforeEach(func() { + testServer = httptest.NewServer(http.HandlerFunc(func(res http.ResponseWriter, req *http.Request) { + defer GinkgoRecover() + + // Verify the contents of the request + Expect(req.URL.EscapedPath()).To(Equal(createManageDrPath)) + Expect(req.Method).To(Equal("POST")) + + // For gzip-disabled operation, verify Content-Encoding is not set. + Expect(req.Header.Get("Content-Encoding")).To(BeEmpty()) + + // If there is a body, then make sure we can read it + bodyBuf := new(bytes.Buffer) + if req.Header.Get("Content-Encoding") == "gzip" { + body, err := core.NewGzipDecompressionReader(req.Body) + Expect(err).To(BeNil()) + _, err = bodyBuf.ReadFrom(body) + Expect(err).To(BeNil()) + } else { + _, err := bodyBuf.ReadFrom(req.Body) + Expect(err).To(BeNil()) + } + fmt.Fprintf(GinkgoWriter, " Request body: %s", bodyBuf.String()) + + Expect(req.Header["Accept-Language"]).ToNot(BeNil()) + Expect(req.Header["Accept-Language"][0]).To(Equal(fmt.Sprintf("%v", "testString"))) + Expect(req.Header["If-None-Match"]).ToNot(BeNil()) + Expect(req.Header["If-None-Match"][0]).To(Equal(fmt.Sprintf("%v", "testString"))) + Expect(req.URL.Query()["stand_by_redeploy"]).To(Equal([]string{"testString"})) + // TODO: Add check for accepts_incomplete query parameter + // Set mock response + res.Header().Set("Content-type", "application/json") + res.WriteHeader(200) + fmt.Fprintf(res, "%s", `{"dashboard_url": "https://power-dra.test.cloud.ibm.com/power-dra-ui?instance_id=crn:v1:bluemix:public:power-dr-automation:us-south:a/fe3c2ccd058e407c81e1dba2b5c0e0d6:e3d09875-bbf8-4d8a-b52c-abefb67a53c5::", "id": "crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::"}`) + })) + }) + It(`Invoke CreateManageDr successfully`, func() { + drAutomationServiceService, serviceErr := drautomationservicev1.NewDrAutomationServiceV1(&drautomationservicev1.DrAutomationServiceV1Options{ + URL: testServer.URL, + Authenticator: &core.NoAuthAuthenticator{}, + }) + Expect(serviceErr).To(BeNil()) + Expect(drAutomationServiceService).ToNot(BeNil()) + + // Invoke operation with nil options model (negative test) + result, response, operationErr := drAutomationServiceService.CreateManageDr(nil) + Expect(operationErr).NotTo(BeNil()) + Expect(response).To(BeNil()) + Expect(result).To(BeNil()) + + // Construct an instance of the CreateManageDrOptions model + createManageDrOptionsModel := new(drautomationservicev1.CreateManageDrOptions) + createManageDrOptionsModel.InstanceID = core.StringPtr("crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::") + createManageDrOptionsModel.APIKey = core.StringPtr("testString") + createManageDrOptionsModel.ClientID = core.StringPtr("d9f2c83a-97d2-4b14-bf62-8eaecc67a122") + createManageDrOptionsModel.ClientSecret = core.StringPtr("N8lQ4tP2xM1yT5rS8wK6qR9dD7vF1hU4sA3bE2jG0pL9oX7yC") + createManageDrOptionsModel.GUID = core.StringPtr("123e4567-e89b-12d3-a456-426614174000") + createManageDrOptionsModel.LocationID = core.StringPtr("dal10") + createManageDrOptionsModel.MachineType = core.StringPtr("bx2-4x16") + createManageDrOptionsModel.OrchestratorHa = core.BoolPtr(true) + createManageDrOptionsModel.OrchestratorLocationType = core.StringPtr("off-premises") + createManageDrOptionsModel.OrchestratorName = core.StringPtr("adminUser") + createManageDrOptionsModel.OrchestratorPassword = core.StringPtr("testString") + createManageDrOptionsModel.OrchestratorWorkspaceID = core.StringPtr("orch-workspace-01") + createManageDrOptionsModel.OrchestratorWorkspaceLocation = core.StringPtr("us-south") + createManageDrOptionsModel.ProxyIP = core.StringPtr("10.40.30.10:8888") + createManageDrOptionsModel.RegionID = core.StringPtr("us-south") + createManageDrOptionsModel.ResourceInstance = core.StringPtr("crn:v1:bluemix:public:resource-controller::res123") + createManageDrOptionsModel.SecondaryWorkspaceID = core.StringPtr("secondary-workspace789") + createManageDrOptionsModel.Secret = core.StringPtr("testString") + createManageDrOptionsModel.SecretGroup = core.StringPtr("default-secret-group") + createManageDrOptionsModel.SSHKeyName = core.StringPtr("my-ssh-key") + createManageDrOptionsModel.StandbyMachineType = core.StringPtr("bx2-8x32") + createManageDrOptionsModel.StandbyOrchestratorName = core.StringPtr("standbyAdmin") + createManageDrOptionsModel.StandbyOrchestratorWorkspaceID = core.StringPtr("orch-standby-02") + createManageDrOptionsModel.StandbyOrchestratorWorkspaceLocation = core.StringPtr("us-east") + createManageDrOptionsModel.StandbyTier = core.StringPtr("Premium") + createManageDrOptionsModel.TenantName = core.StringPtr("xxx.ibm.com") + createManageDrOptionsModel.Tier = core.StringPtr("Standard") + createManageDrOptionsModel.StandByRedeploy = core.StringPtr("testString") + createManageDrOptionsModel.AcceptLanguage = core.StringPtr("testString") + createManageDrOptionsModel.IfNoneMatch = core.StringPtr("testString") + createManageDrOptionsModel.AcceptsIncomplete = core.BoolPtr(true) + createManageDrOptionsModel.Headers = map[string]string{"x-custom-header": "x-custom-value"} + + // Invoke operation with valid options model (positive test) + result, response, operationErr = drAutomationServiceService.CreateManageDr(createManageDrOptionsModel) + Expect(operationErr).To(BeNil()) + Expect(response).ToNot(BeNil()) + Expect(result).ToNot(BeNil()) + + }) + It(`Invoke CreateManageDr with error: Operation validation and request error`, func() { + drAutomationServiceService, serviceErr := drautomationservicev1.NewDrAutomationServiceV1(&drautomationservicev1.DrAutomationServiceV1Options{ + URL: testServer.URL, + Authenticator: &core.NoAuthAuthenticator{}, + }) + Expect(serviceErr).To(BeNil()) + Expect(drAutomationServiceService).ToNot(BeNil()) + + // Construct an instance of the CreateManageDrOptions model + createManageDrOptionsModel := new(drautomationservicev1.CreateManageDrOptions) + createManageDrOptionsModel.InstanceID = core.StringPtr("crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::") + createManageDrOptionsModel.APIKey = core.StringPtr("testString") + createManageDrOptionsModel.ClientID = core.StringPtr("d9f2c83a-97d2-4b14-bf62-8eaecc67a122") + createManageDrOptionsModel.ClientSecret = core.StringPtr("N8lQ4tP2xM1yT5rS8wK6qR9dD7vF1hU4sA3bE2jG0pL9oX7yC") + createManageDrOptionsModel.GUID = core.StringPtr("123e4567-e89b-12d3-a456-426614174000") + createManageDrOptionsModel.LocationID = core.StringPtr("dal10") + createManageDrOptionsModel.MachineType = core.StringPtr("bx2-4x16") + createManageDrOptionsModel.OrchestratorHa = core.BoolPtr(true) + createManageDrOptionsModel.OrchestratorLocationType = core.StringPtr("off-premises") + createManageDrOptionsModel.OrchestratorName = core.StringPtr("adminUser") + createManageDrOptionsModel.OrchestratorPassword = core.StringPtr("testString") + createManageDrOptionsModel.OrchestratorWorkspaceID = core.StringPtr("orch-workspace-01") + createManageDrOptionsModel.OrchestratorWorkspaceLocation = core.StringPtr("us-south") + createManageDrOptionsModel.ProxyIP = core.StringPtr("10.40.30.10:8888") + createManageDrOptionsModel.RegionID = core.StringPtr("us-south") + createManageDrOptionsModel.ResourceInstance = core.StringPtr("crn:v1:bluemix:public:resource-controller::res123") + createManageDrOptionsModel.SecondaryWorkspaceID = core.StringPtr("secondary-workspace789") + createManageDrOptionsModel.Secret = core.StringPtr("testString") + createManageDrOptionsModel.SecretGroup = core.StringPtr("default-secret-group") + createManageDrOptionsModel.SSHKeyName = core.StringPtr("my-ssh-key") + createManageDrOptionsModel.StandbyMachineType = core.StringPtr("bx2-8x32") + createManageDrOptionsModel.StandbyOrchestratorName = core.StringPtr("standbyAdmin") + createManageDrOptionsModel.StandbyOrchestratorWorkspaceID = core.StringPtr("orch-standby-02") + createManageDrOptionsModel.StandbyOrchestratorWorkspaceLocation = core.StringPtr("us-east") + createManageDrOptionsModel.StandbyTier = core.StringPtr("Premium") + createManageDrOptionsModel.TenantName = core.StringPtr("xxx.ibm.com") + createManageDrOptionsModel.Tier = core.StringPtr("Standard") + createManageDrOptionsModel.StandByRedeploy = core.StringPtr("testString") + createManageDrOptionsModel.AcceptLanguage = core.StringPtr("testString") + createManageDrOptionsModel.IfNoneMatch = core.StringPtr("testString") + createManageDrOptionsModel.AcceptsIncomplete = core.BoolPtr(true) + createManageDrOptionsModel.Headers = map[string]string{"x-custom-header": "x-custom-value"} + // Invoke operation with empty URL (negative test) + err := drAutomationServiceService.SetServiceURL("") + Expect(err).To(BeNil()) + result, response, operationErr := drAutomationServiceService.CreateManageDr(createManageDrOptionsModel) + Expect(operationErr).ToNot(BeNil()) + Expect(operationErr.Error()).To(ContainSubstring(core.ERRORMSG_SERVICE_URL_MISSING)) + Expect(response).To(BeNil()) + Expect(result).To(BeNil()) + // Construct a second instance of the CreateManageDrOptions model with no property values + createManageDrOptionsModelNew := new(drautomationservicev1.CreateManageDrOptions) + // Invoke operation with invalid model (negative test) + result, response, operationErr = drAutomationServiceService.CreateManageDr(createManageDrOptionsModelNew) + Expect(operationErr).ToNot(BeNil()) + Expect(response).To(BeNil()) + Expect(result).To(BeNil()) + }) + AfterEach(func() { + testServer.Close() + }) + }) + Context(`Using mock server endpoint with missing response body`, func() { + BeforeEach(func() { + testServer = httptest.NewServer(http.HandlerFunc(func(res http.ResponseWriter, req *http.Request) { + defer GinkgoRecover() + + // Set success status code with no respoonse body + res.WriteHeader(200) + })) + }) + It(`Invoke CreateManageDr successfully`, func() { + drAutomationServiceService, serviceErr := drautomationservicev1.NewDrAutomationServiceV1(&drautomationservicev1.DrAutomationServiceV1Options{ + URL: testServer.URL, + Authenticator: &core.NoAuthAuthenticator{}, + }) + Expect(serviceErr).To(BeNil()) + Expect(drAutomationServiceService).ToNot(BeNil()) + + // Construct an instance of the CreateManageDrOptions model + createManageDrOptionsModel := new(drautomationservicev1.CreateManageDrOptions) + createManageDrOptionsModel.InstanceID = core.StringPtr("crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::") + createManageDrOptionsModel.APIKey = core.StringPtr("testString") + createManageDrOptionsModel.ClientID = core.StringPtr("d9f2c83a-97d2-4b14-bf62-8eaecc67a122") + createManageDrOptionsModel.ClientSecret = core.StringPtr("N8lQ4tP2xM1yT5rS8wK6qR9dD7vF1hU4sA3bE2jG0pL9oX7yC") + createManageDrOptionsModel.GUID = core.StringPtr("123e4567-e89b-12d3-a456-426614174000") + createManageDrOptionsModel.LocationID = core.StringPtr("dal10") + createManageDrOptionsModel.MachineType = core.StringPtr("bx2-4x16") + createManageDrOptionsModel.OrchestratorHa = core.BoolPtr(true) + createManageDrOptionsModel.OrchestratorLocationType = core.StringPtr("off-premises") + createManageDrOptionsModel.OrchestratorName = core.StringPtr("adminUser") + createManageDrOptionsModel.OrchestratorPassword = core.StringPtr("testString") + createManageDrOptionsModel.OrchestratorWorkspaceID = core.StringPtr("orch-workspace-01") + createManageDrOptionsModel.OrchestratorWorkspaceLocation = core.StringPtr("us-south") + createManageDrOptionsModel.ProxyIP = core.StringPtr("10.40.30.10:8888") + createManageDrOptionsModel.RegionID = core.StringPtr("us-south") + createManageDrOptionsModel.ResourceInstance = core.StringPtr("crn:v1:bluemix:public:resource-controller::res123") + createManageDrOptionsModel.SecondaryWorkspaceID = core.StringPtr("secondary-workspace789") + createManageDrOptionsModel.Secret = core.StringPtr("testString") + createManageDrOptionsModel.SecretGroup = core.StringPtr("default-secret-group") + createManageDrOptionsModel.SSHKeyName = core.StringPtr("my-ssh-key") + createManageDrOptionsModel.StandbyMachineType = core.StringPtr("bx2-8x32") + createManageDrOptionsModel.StandbyOrchestratorName = core.StringPtr("standbyAdmin") + createManageDrOptionsModel.StandbyOrchestratorWorkspaceID = core.StringPtr("orch-standby-02") + createManageDrOptionsModel.StandbyOrchestratorWorkspaceLocation = core.StringPtr("us-east") + createManageDrOptionsModel.StandbyTier = core.StringPtr("Premium") + createManageDrOptionsModel.TenantName = core.StringPtr("xxx.ibm.com") + createManageDrOptionsModel.Tier = core.StringPtr("Standard") + createManageDrOptionsModel.StandByRedeploy = core.StringPtr("testString") + createManageDrOptionsModel.AcceptLanguage = core.StringPtr("testString") + createManageDrOptionsModel.IfNoneMatch = core.StringPtr("testString") + createManageDrOptionsModel.AcceptsIncomplete = core.BoolPtr(true) + createManageDrOptionsModel.Headers = map[string]string{"x-custom-header": "x-custom-value"} + + // Invoke operation + result, response, operationErr := drAutomationServiceService.CreateManageDr(createManageDrOptionsModel) + Expect(operationErr).To(BeNil()) + Expect(response).ToNot(BeNil()) + + // Verify a nil result + Expect(result).To(BeNil()) + }) + AfterEach(func() { + testServer.Close() + }) + }) + }) + Describe(`GetLastOperation(getLastOperationOptions *GetLastOperationOptions) - Operation response error`, func() { + getLastOperationPath := "/drautomation/v1/last_operation/crn:v1:staging:public:power-dr-automation:global:a%2Fa123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::" + Context(`Using mock server endpoint with invalid JSON response`, func() { + BeforeEach(func() { + testServer = httptest.NewServer(http.HandlerFunc(func(res http.ResponseWriter, req *http.Request) { + defer GinkgoRecover() + + // Verify the contents of the request + Expect(req.URL.EscapedPath()).To(Equal(getLastOperationPath)) + Expect(req.Method).To(Equal("GET")) + Expect(req.Header["Accept-Language"]).ToNot(BeNil()) + Expect(req.Header["Accept-Language"][0]).To(Equal(fmt.Sprintf("%v", "testString"))) + Expect(req.Header["If-None-Match"]).ToNot(BeNil()) + Expect(req.Header["If-None-Match"][0]).To(Equal(fmt.Sprintf("%v", "testString"))) + res.Header().Set("Content-type", "application/json") + res.WriteHeader(200) + fmt.Fprint(res, `} this is not valid json {`) + })) + }) + It(`Invoke GetLastOperation with error: Operation response processing error`, func() { + drAutomationServiceService, serviceErr := drautomationservicev1.NewDrAutomationServiceV1(&drautomationservicev1.DrAutomationServiceV1Options{ + URL: testServer.URL, + Authenticator: &core.NoAuthAuthenticator{}, + }) + Expect(serviceErr).To(BeNil()) + Expect(drAutomationServiceService).ToNot(BeNil()) + + // Construct an instance of the GetLastOperationOptions model + getLastOperationOptionsModel := new(drautomationservicev1.GetLastOperationOptions) + getLastOperationOptionsModel.InstanceID = core.StringPtr("crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::") + getLastOperationOptionsModel.AcceptLanguage = core.StringPtr("testString") + getLastOperationOptionsModel.IfNoneMatch = core.StringPtr("testString") + getLastOperationOptionsModel.Headers = map[string]string{"x-custom-header": "x-custom-value"} + // Expect response parsing to fail since we are receiving a text/plain response + result, response, operationErr := drAutomationServiceService.GetLastOperation(getLastOperationOptionsModel) + Expect(operationErr).ToNot(BeNil()) + Expect(response).ToNot(BeNil()) + Expect(result).To(BeNil()) + + // Enable retries and test again + drAutomationServiceService.EnableRetries(0, 0) + result, response, operationErr = drAutomationServiceService.GetLastOperation(getLastOperationOptionsModel) + Expect(operationErr).ToNot(BeNil()) + Expect(response).ToNot(BeNil()) + Expect(result).To(BeNil()) + }) + AfterEach(func() { + testServer.Close() + }) + }) + }) + Describe(`GetLastOperation(getLastOperationOptions *GetLastOperationOptions)`, func() { + getLastOperationPath := "/drautomation/v1/last_operation/crn:v1:staging:public:power-dr-automation:global:a%2Fa123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::" + Context(`Using mock server endpoint with timeout`, func() { + BeforeEach(func() { + testServer = httptest.NewServer(http.HandlerFunc(func(res http.ResponseWriter, req *http.Request) { + defer GinkgoRecover() + + // Verify the contents of the request + Expect(req.URL.EscapedPath()).To(Equal(getLastOperationPath)) + Expect(req.Method).To(Equal("GET")) + + Expect(req.Header["Accept-Language"]).ToNot(BeNil()) + Expect(req.Header["Accept-Language"][0]).To(Equal(fmt.Sprintf("%v", "testString"))) + Expect(req.Header["If-None-Match"]).ToNot(BeNil()) + Expect(req.Header["If-None-Match"][0]).To(Equal(fmt.Sprintf("%v", "testString"))) + // Sleep a short time to support a timeout test + time.Sleep(100 * time.Millisecond) + + // Set mock response + res.Header().Set("Content-type", "application/json") + res.WriteHeader(200) + fmt.Fprintf(res, "%s", `{"crn": "crn:v1:staging:public:power-dr-automation:global:a/2c5d7270091f495795350e9adfa8399c:86e0c9a9-80f4-4fcf-88a0-07643de01bb8::", "deployment_name": "dr-deployment-instance-1", "last_updated_orchestrator_deployment_time": "2025-10-16T09:28:13.696Z", "last_updated_standby_orchestrator_deployment_time": "2025-10-16T09:28:13.696Z", "mfa_enabled": "true", "orch_ext_connectivity_status": "Connected", "orch_standby_node_addtion_status": "Completed", "orchestrator_cluster_message": "Cluster healthy", "orchestrator_config_status": "Configured", "orchestrator_ha": true, "plan_name": "DR Automation Private Plan", "primary_description": "2/5: Creating primary orchestrator VM.", "primary_ip_address": "192.168.1.10", "primary_orchestrator_status": "orchestrator-VM-creation-in-progress", "recovery_location": "us-east", "resource_group": "Default", "standby_description": "1/4: Service instance is downloading orchestrator image for standby VM creation.", "standby_ip_address": "192.168.1.11", "standby_status": "downloading-orchestrator-image", "status": "Running"}`) + })) + }) + It(`Invoke GetLastOperation successfully with retries`, func() { + drAutomationServiceService, serviceErr := drautomationservicev1.NewDrAutomationServiceV1(&drautomationservicev1.DrAutomationServiceV1Options{ + URL: testServer.URL, + Authenticator: &core.NoAuthAuthenticator{}, + }) + Expect(serviceErr).To(BeNil()) + Expect(drAutomationServiceService).ToNot(BeNil()) + drAutomationServiceService.EnableRetries(0, 0) + + // Construct an instance of the GetLastOperationOptions model + getLastOperationOptionsModel := new(drautomationservicev1.GetLastOperationOptions) + getLastOperationOptionsModel.InstanceID = core.StringPtr("crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::") + getLastOperationOptionsModel.AcceptLanguage = core.StringPtr("testString") + getLastOperationOptionsModel.IfNoneMatch = core.StringPtr("testString") + getLastOperationOptionsModel.Headers = map[string]string{"x-custom-header": "x-custom-value"} + + // Invoke operation with a Context to test a timeout error + ctx, cancelFunc := context.WithTimeout(context.Background(), 80*time.Millisecond) + defer cancelFunc() + _, _, operationErr := drAutomationServiceService.GetLastOperationWithContext(ctx, getLastOperationOptionsModel) + Expect(operationErr).ToNot(BeNil()) + Expect(operationErr.Error()).To(ContainSubstring("deadline exceeded")) + + // Disable retries and test again + drAutomationServiceService.DisableRetries() + result, response, operationErr := drAutomationServiceService.GetLastOperation(getLastOperationOptionsModel) + Expect(operationErr).To(BeNil()) + Expect(response).ToNot(BeNil()) + Expect(result).ToNot(BeNil()) + + // Re-test the timeout error with retries disabled + ctx, cancelFunc2 := context.WithTimeout(context.Background(), 80*time.Millisecond) + defer cancelFunc2() + _, _, operationErr = drAutomationServiceService.GetLastOperationWithContext(ctx, getLastOperationOptionsModel) + Expect(operationErr).ToNot(BeNil()) + Expect(operationErr.Error()).To(ContainSubstring("deadline exceeded")) + }) + AfterEach(func() { + testServer.Close() + }) + }) + Context(`Using mock server endpoint`, func() { + BeforeEach(func() { + testServer = httptest.NewServer(http.HandlerFunc(func(res http.ResponseWriter, req *http.Request) { + defer GinkgoRecover() + + // Verify the contents of the request + Expect(req.URL.EscapedPath()).To(Equal(getLastOperationPath)) + Expect(req.Method).To(Equal("GET")) + + Expect(req.Header["Accept-Language"]).ToNot(BeNil()) + Expect(req.Header["Accept-Language"][0]).To(Equal(fmt.Sprintf("%v", "testString"))) + Expect(req.Header["If-None-Match"]).ToNot(BeNil()) + Expect(req.Header["If-None-Match"][0]).To(Equal(fmt.Sprintf("%v", "testString"))) + // Set mock response + res.Header().Set("Content-type", "application/json") + res.WriteHeader(200) + fmt.Fprintf(res, "%s", `{"crn": "crn:v1:staging:public:power-dr-automation:global:a/2c5d7270091f495795350e9adfa8399c:86e0c9a9-80f4-4fcf-88a0-07643de01bb8::", "deployment_name": "dr-deployment-instance-1", "last_updated_orchestrator_deployment_time": "2025-10-16T09:28:13.696Z", "last_updated_standby_orchestrator_deployment_time": "2025-10-16T09:28:13.696Z", "mfa_enabled": "true", "orch_ext_connectivity_status": "Connected", "orch_standby_node_addtion_status": "Completed", "orchestrator_cluster_message": "Cluster healthy", "orchestrator_config_status": "Configured", "orchestrator_ha": true, "plan_name": "DR Automation Private Plan", "primary_description": "2/5: Creating primary orchestrator VM.", "primary_ip_address": "192.168.1.10", "primary_orchestrator_status": "orchestrator-VM-creation-in-progress", "recovery_location": "us-east", "resource_group": "Default", "standby_description": "1/4: Service instance is downloading orchestrator image for standby VM creation.", "standby_ip_address": "192.168.1.11", "standby_status": "downloading-orchestrator-image", "status": "Running"}`) + })) + }) + It(`Invoke GetLastOperation successfully`, func() { + drAutomationServiceService, serviceErr := drautomationservicev1.NewDrAutomationServiceV1(&drautomationservicev1.DrAutomationServiceV1Options{ + URL: testServer.URL, + Authenticator: &core.NoAuthAuthenticator{}, + }) + Expect(serviceErr).To(BeNil()) + Expect(drAutomationServiceService).ToNot(BeNil()) + + // Invoke operation with nil options model (negative test) + result, response, operationErr := drAutomationServiceService.GetLastOperation(nil) + Expect(operationErr).NotTo(BeNil()) + Expect(response).To(BeNil()) + Expect(result).To(BeNil()) + + // Construct an instance of the GetLastOperationOptions model + getLastOperationOptionsModel := new(drautomationservicev1.GetLastOperationOptions) + getLastOperationOptionsModel.InstanceID = core.StringPtr("crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::") + getLastOperationOptionsModel.AcceptLanguage = core.StringPtr("testString") + getLastOperationOptionsModel.IfNoneMatch = core.StringPtr("testString") + getLastOperationOptionsModel.Headers = map[string]string{"x-custom-header": "x-custom-value"} + + // Invoke operation with valid options model (positive test) + result, response, operationErr = drAutomationServiceService.GetLastOperation(getLastOperationOptionsModel) + Expect(operationErr).To(BeNil()) + Expect(response).ToNot(BeNil()) + Expect(result).ToNot(BeNil()) + + }) + It(`Invoke GetLastOperation with error: Operation validation and request error`, func() { + drAutomationServiceService, serviceErr := drautomationservicev1.NewDrAutomationServiceV1(&drautomationservicev1.DrAutomationServiceV1Options{ + URL: testServer.URL, + Authenticator: &core.NoAuthAuthenticator{}, + }) + Expect(serviceErr).To(BeNil()) + Expect(drAutomationServiceService).ToNot(BeNil()) + + // Construct an instance of the GetLastOperationOptions model + getLastOperationOptionsModel := new(drautomationservicev1.GetLastOperationOptions) + getLastOperationOptionsModel.InstanceID = core.StringPtr("crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::") + getLastOperationOptionsModel.AcceptLanguage = core.StringPtr("testString") + getLastOperationOptionsModel.IfNoneMatch = core.StringPtr("testString") + getLastOperationOptionsModel.Headers = map[string]string{"x-custom-header": "x-custom-value"} + // Invoke operation with empty URL (negative test) + err := drAutomationServiceService.SetServiceURL("") + Expect(err).To(BeNil()) + result, response, operationErr := drAutomationServiceService.GetLastOperation(getLastOperationOptionsModel) + Expect(operationErr).ToNot(BeNil()) + Expect(operationErr.Error()).To(ContainSubstring(core.ERRORMSG_SERVICE_URL_MISSING)) + Expect(response).To(BeNil()) + Expect(result).To(BeNil()) + // Construct a second instance of the GetLastOperationOptions model with no property values + getLastOperationOptionsModelNew := new(drautomationservicev1.GetLastOperationOptions) + // Invoke operation with invalid model (negative test) + result, response, operationErr = drAutomationServiceService.GetLastOperation(getLastOperationOptionsModelNew) + Expect(operationErr).ToNot(BeNil()) + Expect(response).To(BeNil()) + Expect(result).To(BeNil()) + }) + AfterEach(func() { + testServer.Close() + }) + }) + Context(`Using mock server endpoint with missing response body`, func() { + BeforeEach(func() { + testServer = httptest.NewServer(http.HandlerFunc(func(res http.ResponseWriter, req *http.Request) { + defer GinkgoRecover() + + // Set success status code with no respoonse body + res.WriteHeader(200) + })) + }) + It(`Invoke GetLastOperation successfully`, func() { + drAutomationServiceService, serviceErr := drautomationservicev1.NewDrAutomationServiceV1(&drautomationservicev1.DrAutomationServiceV1Options{ + URL: testServer.URL, + Authenticator: &core.NoAuthAuthenticator{}, + }) + Expect(serviceErr).To(BeNil()) + Expect(drAutomationServiceService).ToNot(BeNil()) + + // Construct an instance of the GetLastOperationOptions model + getLastOperationOptionsModel := new(drautomationservicev1.GetLastOperationOptions) + getLastOperationOptionsModel.InstanceID = core.StringPtr("crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::") + getLastOperationOptionsModel.AcceptLanguage = core.StringPtr("testString") + getLastOperationOptionsModel.IfNoneMatch = core.StringPtr("testString") + getLastOperationOptionsModel.Headers = map[string]string{"x-custom-header": "x-custom-value"} + + // Invoke operation + result, response, operationErr := drAutomationServiceService.GetLastOperation(getLastOperationOptionsModel) + Expect(operationErr).To(BeNil()) + Expect(response).ToNot(BeNil()) + + // Verify a nil result + Expect(result).To(BeNil()) + }) + AfterEach(func() { + testServer.Close() + }) + }) + }) + Describe(`ListEvents(listEventsOptions *ListEventsOptions) - Operation response error`, func() { + listEventsPath := "/drautomation/v1/service_instances/crn:v1:staging:public:power-dr-automation:global:a%2Fa123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::/events" + Context(`Using mock server endpoint with invalid JSON response`, func() { + BeforeEach(func() { + testServer = httptest.NewServer(http.HandlerFunc(func(res http.ResponseWriter, req *http.Request) { + defer GinkgoRecover() + + // Verify the contents of the request + Expect(req.URL.EscapedPath()).To(Equal(listEventsPath)) + Expect(req.Method).To(Equal("GET")) + Expect(req.Header["Accept-Language"]).ToNot(BeNil()) + Expect(req.Header["Accept-Language"][0]).To(Equal(fmt.Sprintf("%v", "testString"))) + Expect(req.Header["If-None-Match"]).ToNot(BeNil()) + Expect(req.Header["If-None-Match"][0]).To(Equal(fmt.Sprintf("%v", "testString"))) + Expect(req.URL.Query()["time"]).To(Equal([]string{"2025-06-19T23:59:59Z"})) + Expect(req.URL.Query()["from_time"]).To(Equal([]string{"2025-06-19T00:00:00Z"})) + Expect(req.URL.Query()["to_time"]).To(Equal([]string{"2025-06-19T23:59:59Z"})) + res.Header().Set("Content-type", "application/json") + res.WriteHeader(200) + fmt.Fprint(res, `} this is not valid json {`) + })) + }) + It(`Invoke ListEvents with error: Operation response processing error`, func() { + drAutomationServiceService, serviceErr := drautomationservicev1.NewDrAutomationServiceV1(&drautomationservicev1.DrAutomationServiceV1Options{ + URL: testServer.URL, + Authenticator: &core.NoAuthAuthenticator{}, + }) + Expect(serviceErr).To(BeNil()) + Expect(drAutomationServiceService).ToNot(BeNil()) + + // Construct an instance of the ListEventsOptions model + listEventsOptionsModel := new(drautomationservicev1.ListEventsOptions) + listEventsOptionsModel.InstanceID = core.StringPtr("crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::") + listEventsOptionsModel.Time = core.StringPtr("2025-06-19T23:59:59Z") + listEventsOptionsModel.FromTime = core.StringPtr("2025-06-19T00:00:00Z") + listEventsOptionsModel.ToTime = core.StringPtr("2025-06-19T23:59:59Z") + listEventsOptionsModel.AcceptLanguage = core.StringPtr("testString") + listEventsOptionsModel.IfNoneMatch = core.StringPtr("testString") + listEventsOptionsModel.Headers = map[string]string{"x-custom-header": "x-custom-value"} + // Expect response parsing to fail since we are receiving a text/plain response + result, response, operationErr := drAutomationServiceService.ListEvents(listEventsOptionsModel) + Expect(operationErr).ToNot(BeNil()) + Expect(response).ToNot(BeNil()) + Expect(result).To(BeNil()) + + // Enable retries and test again + drAutomationServiceService.EnableRetries(0, 0) + result, response, operationErr = drAutomationServiceService.ListEvents(listEventsOptionsModel) + Expect(operationErr).ToNot(BeNil()) + Expect(response).ToNot(BeNil()) + Expect(result).To(BeNil()) + }) + AfterEach(func() { + testServer.Close() + }) + }) + }) + Describe(`ListEvents(listEventsOptions *ListEventsOptions)`, func() { + listEventsPath := "/drautomation/v1/service_instances/crn:v1:staging:public:power-dr-automation:global:a%2Fa123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::/events" + Context(`Using mock server endpoint with timeout`, func() { + BeforeEach(func() { + testServer = httptest.NewServer(http.HandlerFunc(func(res http.ResponseWriter, req *http.Request) { + defer GinkgoRecover() + + // Verify the contents of the request + Expect(req.URL.EscapedPath()).To(Equal(listEventsPath)) + Expect(req.Method).To(Equal("GET")) + + Expect(req.Header["Accept-Language"]).ToNot(BeNil()) + Expect(req.Header["Accept-Language"][0]).To(Equal(fmt.Sprintf("%v", "testString"))) + Expect(req.Header["If-None-Match"]).ToNot(BeNil()) + Expect(req.Header["If-None-Match"][0]).To(Equal(fmt.Sprintf("%v", "testString"))) + Expect(req.URL.Query()["time"]).To(Equal([]string{"2025-06-19T23:59:59Z"})) + Expect(req.URL.Query()["from_time"]).To(Equal([]string{"2025-06-19T00:00:00Z"})) + Expect(req.URL.Query()["to_time"]).To(Equal([]string{"2025-06-19T23:59:59Z"})) + // Sleep a short time to support a timeout test + time.Sleep(100 * time.Millisecond) + + // Set mock response + res.Header().Set("Content-type", "application/json") + res.WriteHeader(200) + fmt.Fprintf(res, "%s", `{"event": [{"action": "create", "api_source": "dr-automation-api", "event_id": "1cecfe43-43cd-4b1b-86be-30c2d3d2a25f", "level": "info", "message": "Service Instance created successfully", "message_data": {"anyKey": "anyValue"}, "metadata": {"anyKey": "anyValue"}, "resource": "ProvisionID", "time": "2025-06-23T07:12:49.840Z", "timestamp": "1750662769", "user": {"email": "abcuser@ibm.com", "name": "abcuser", "user_id": "IBMid-695000abc7E"}}]}`) + })) + }) + It(`Invoke ListEvents successfully with retries`, func() { + drAutomationServiceService, serviceErr := drautomationservicev1.NewDrAutomationServiceV1(&drautomationservicev1.DrAutomationServiceV1Options{ + URL: testServer.URL, + Authenticator: &core.NoAuthAuthenticator{}, + }) + Expect(serviceErr).To(BeNil()) + Expect(drAutomationServiceService).ToNot(BeNil()) + drAutomationServiceService.EnableRetries(0, 0) + + // Construct an instance of the ListEventsOptions model + listEventsOptionsModel := new(drautomationservicev1.ListEventsOptions) + listEventsOptionsModel.InstanceID = core.StringPtr("crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::") + listEventsOptionsModel.Time = core.StringPtr("2025-06-19T23:59:59Z") + listEventsOptionsModel.FromTime = core.StringPtr("2025-06-19T00:00:00Z") + listEventsOptionsModel.ToTime = core.StringPtr("2025-06-19T23:59:59Z") + listEventsOptionsModel.AcceptLanguage = core.StringPtr("testString") + listEventsOptionsModel.IfNoneMatch = core.StringPtr("testString") + listEventsOptionsModel.Headers = map[string]string{"x-custom-header": "x-custom-value"} + + // Invoke operation with a Context to test a timeout error + ctx, cancelFunc := context.WithTimeout(context.Background(), 80*time.Millisecond) + defer cancelFunc() + _, _, operationErr := drAutomationServiceService.ListEventsWithContext(ctx, listEventsOptionsModel) + Expect(operationErr).ToNot(BeNil()) + Expect(operationErr.Error()).To(ContainSubstring("deadline exceeded")) + + // Disable retries and test again + drAutomationServiceService.DisableRetries() + result, response, operationErr := drAutomationServiceService.ListEvents(listEventsOptionsModel) + Expect(operationErr).To(BeNil()) + Expect(response).ToNot(BeNil()) + Expect(result).ToNot(BeNil()) + + // Re-test the timeout error with retries disabled + ctx, cancelFunc2 := context.WithTimeout(context.Background(), 80*time.Millisecond) + defer cancelFunc2() + _, _, operationErr = drAutomationServiceService.ListEventsWithContext(ctx, listEventsOptionsModel) + Expect(operationErr).ToNot(BeNil()) + Expect(operationErr.Error()).To(ContainSubstring("deadline exceeded")) + }) + AfterEach(func() { + testServer.Close() + }) + }) + Context(`Using mock server endpoint`, func() { + BeforeEach(func() { + testServer = httptest.NewServer(http.HandlerFunc(func(res http.ResponseWriter, req *http.Request) { + defer GinkgoRecover() + + // Verify the contents of the request + Expect(req.URL.EscapedPath()).To(Equal(listEventsPath)) + Expect(req.Method).To(Equal("GET")) + + Expect(req.Header["Accept-Language"]).ToNot(BeNil()) + Expect(req.Header["Accept-Language"][0]).To(Equal(fmt.Sprintf("%v", "testString"))) + Expect(req.Header["If-None-Match"]).ToNot(BeNil()) + Expect(req.Header["If-None-Match"][0]).To(Equal(fmt.Sprintf("%v", "testString"))) + Expect(req.URL.Query()["time"]).To(Equal([]string{"2025-06-19T23:59:59Z"})) + Expect(req.URL.Query()["from_time"]).To(Equal([]string{"2025-06-19T00:00:00Z"})) + Expect(req.URL.Query()["to_time"]).To(Equal([]string{"2025-06-19T23:59:59Z"})) + // Set mock response + res.Header().Set("Content-type", "application/json") + res.WriteHeader(200) + fmt.Fprintf(res, "%s", `{"event": [{"action": "create", "api_source": "dr-automation-api", "event_id": "1cecfe43-43cd-4b1b-86be-30c2d3d2a25f", "level": "info", "message": "Service Instance created successfully", "message_data": {"anyKey": "anyValue"}, "metadata": {"anyKey": "anyValue"}, "resource": "ProvisionID", "time": "2025-06-23T07:12:49.840Z", "timestamp": "1750662769", "user": {"email": "abcuser@ibm.com", "name": "abcuser", "user_id": "IBMid-695000abc7E"}}]}`) + })) + }) + It(`Invoke ListEvents successfully`, func() { + drAutomationServiceService, serviceErr := drautomationservicev1.NewDrAutomationServiceV1(&drautomationservicev1.DrAutomationServiceV1Options{ + URL: testServer.URL, + Authenticator: &core.NoAuthAuthenticator{}, + }) + Expect(serviceErr).To(BeNil()) + Expect(drAutomationServiceService).ToNot(BeNil()) + + // Invoke operation with nil options model (negative test) + result, response, operationErr := drAutomationServiceService.ListEvents(nil) + Expect(operationErr).NotTo(BeNil()) + Expect(response).To(BeNil()) + Expect(result).To(BeNil()) + + // Construct an instance of the ListEventsOptions model + listEventsOptionsModel := new(drautomationservicev1.ListEventsOptions) + listEventsOptionsModel.InstanceID = core.StringPtr("crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::") + listEventsOptionsModel.Time = core.StringPtr("2025-06-19T23:59:59Z") + listEventsOptionsModel.FromTime = core.StringPtr("2025-06-19T00:00:00Z") + listEventsOptionsModel.ToTime = core.StringPtr("2025-06-19T23:59:59Z") + listEventsOptionsModel.AcceptLanguage = core.StringPtr("testString") + listEventsOptionsModel.IfNoneMatch = core.StringPtr("testString") + listEventsOptionsModel.Headers = map[string]string{"x-custom-header": "x-custom-value"} + + // Invoke operation with valid options model (positive test) + result, response, operationErr = drAutomationServiceService.ListEvents(listEventsOptionsModel) + Expect(operationErr).To(BeNil()) + Expect(response).ToNot(BeNil()) + Expect(result).ToNot(BeNil()) + + }) + It(`Invoke ListEvents with error: Operation validation and request error`, func() { + drAutomationServiceService, serviceErr := drautomationservicev1.NewDrAutomationServiceV1(&drautomationservicev1.DrAutomationServiceV1Options{ + URL: testServer.URL, + Authenticator: &core.NoAuthAuthenticator{}, + }) + Expect(serviceErr).To(BeNil()) + Expect(drAutomationServiceService).ToNot(BeNil()) + + // Construct an instance of the ListEventsOptions model + listEventsOptionsModel := new(drautomationservicev1.ListEventsOptions) + listEventsOptionsModel.InstanceID = core.StringPtr("crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::") + listEventsOptionsModel.Time = core.StringPtr("2025-06-19T23:59:59Z") + listEventsOptionsModel.FromTime = core.StringPtr("2025-06-19T00:00:00Z") + listEventsOptionsModel.ToTime = core.StringPtr("2025-06-19T23:59:59Z") + listEventsOptionsModel.AcceptLanguage = core.StringPtr("testString") + listEventsOptionsModel.IfNoneMatch = core.StringPtr("testString") + listEventsOptionsModel.Headers = map[string]string{"x-custom-header": "x-custom-value"} + // Invoke operation with empty URL (negative test) + err := drAutomationServiceService.SetServiceURL("") + Expect(err).To(BeNil()) + result, response, operationErr := drAutomationServiceService.ListEvents(listEventsOptionsModel) + Expect(operationErr).ToNot(BeNil()) + Expect(operationErr.Error()).To(ContainSubstring(core.ERRORMSG_SERVICE_URL_MISSING)) + Expect(response).To(BeNil()) + Expect(result).To(BeNil()) + // Construct a second instance of the ListEventsOptions model with no property values + listEventsOptionsModelNew := new(drautomationservicev1.ListEventsOptions) + // Invoke operation with invalid model (negative test) + result, response, operationErr = drAutomationServiceService.ListEvents(listEventsOptionsModelNew) + Expect(operationErr).ToNot(BeNil()) + Expect(response).To(BeNil()) + Expect(result).To(BeNil()) + }) + AfterEach(func() { + testServer.Close() + }) + }) + Context(`Using mock server endpoint with missing response body`, func() { + BeforeEach(func() { + testServer = httptest.NewServer(http.HandlerFunc(func(res http.ResponseWriter, req *http.Request) { + defer GinkgoRecover() + + // Set success status code with no respoonse body + res.WriteHeader(200) + })) + }) + It(`Invoke ListEvents successfully`, func() { + drAutomationServiceService, serviceErr := drautomationservicev1.NewDrAutomationServiceV1(&drautomationservicev1.DrAutomationServiceV1Options{ + URL: testServer.URL, + Authenticator: &core.NoAuthAuthenticator{}, + }) + Expect(serviceErr).To(BeNil()) + Expect(drAutomationServiceService).ToNot(BeNil()) + + // Construct an instance of the ListEventsOptions model + listEventsOptionsModel := new(drautomationservicev1.ListEventsOptions) + listEventsOptionsModel.InstanceID = core.StringPtr("crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::") + listEventsOptionsModel.Time = core.StringPtr("2025-06-19T23:59:59Z") + listEventsOptionsModel.FromTime = core.StringPtr("2025-06-19T00:00:00Z") + listEventsOptionsModel.ToTime = core.StringPtr("2025-06-19T23:59:59Z") + listEventsOptionsModel.AcceptLanguage = core.StringPtr("testString") + listEventsOptionsModel.IfNoneMatch = core.StringPtr("testString") + listEventsOptionsModel.Headers = map[string]string{"x-custom-header": "x-custom-value"} + + // Invoke operation + result, response, operationErr := drAutomationServiceService.ListEvents(listEventsOptionsModel) + Expect(operationErr).To(BeNil()) + Expect(response).ToNot(BeNil()) + + // Verify a nil result + Expect(result).To(BeNil()) + }) + AfterEach(func() { + testServer.Close() + }) + }) + }) + Describe(`GetEvent(getEventOptions *GetEventOptions) - Operation response error`, func() { + getEventPath := "/drautomation/v1/service_instances/crn:v1:staging:public:power-dr-automation:global:a%2Fa123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::/events/00116b2a-9326-4024-839e-fb5364b76898" + Context(`Using mock server endpoint with invalid JSON response`, func() { + BeforeEach(func() { + testServer = httptest.NewServer(http.HandlerFunc(func(res http.ResponseWriter, req *http.Request) { + defer GinkgoRecover() + + // Verify the contents of the request + Expect(req.URL.EscapedPath()).To(Equal(getEventPath)) + Expect(req.Method).To(Equal("GET")) + Expect(req.Header["Accept-Language"]).ToNot(BeNil()) + Expect(req.Header["Accept-Language"][0]).To(Equal(fmt.Sprintf("%v", "testString"))) + Expect(req.Header["If-None-Match"]).ToNot(BeNil()) + Expect(req.Header["If-None-Match"][0]).To(Equal(fmt.Sprintf("%v", "testString"))) + res.Header().Set("Content-type", "application/json") + res.WriteHeader(200) + fmt.Fprint(res, `} this is not valid json {`) + })) + }) + It(`Invoke GetEvent with error: Operation response processing error`, func() { + drAutomationServiceService, serviceErr := drautomationservicev1.NewDrAutomationServiceV1(&drautomationservicev1.DrAutomationServiceV1Options{ + URL: testServer.URL, + Authenticator: &core.NoAuthAuthenticator{}, + }) + Expect(serviceErr).To(BeNil()) + Expect(drAutomationServiceService).ToNot(BeNil()) + + // Construct an instance of the GetEventOptions model + getEventOptionsModel := new(drautomationservicev1.GetEventOptions) + getEventOptionsModel.InstanceID = core.StringPtr("crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::") + getEventOptionsModel.EventID = core.StringPtr("00116b2a-9326-4024-839e-fb5364b76898") + getEventOptionsModel.AcceptLanguage = core.StringPtr("testString") + getEventOptionsModel.IfNoneMatch = core.StringPtr("testString") + getEventOptionsModel.Headers = map[string]string{"x-custom-header": "x-custom-value"} + // Expect response parsing to fail since we are receiving a text/plain response + result, response, operationErr := drAutomationServiceService.GetEvent(getEventOptionsModel) + Expect(operationErr).ToNot(BeNil()) + Expect(response).ToNot(BeNil()) + Expect(result).To(BeNil()) + + // Enable retries and test again + drAutomationServiceService.EnableRetries(0, 0) + result, response, operationErr = drAutomationServiceService.GetEvent(getEventOptionsModel) + Expect(operationErr).ToNot(BeNil()) + Expect(response).ToNot(BeNil()) + Expect(result).To(BeNil()) + }) + AfterEach(func() { + testServer.Close() + }) + }) + }) + Describe(`GetEvent(getEventOptions *GetEventOptions)`, func() { + getEventPath := "/drautomation/v1/service_instances/crn:v1:staging:public:power-dr-automation:global:a%2Fa123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::/events/00116b2a-9326-4024-839e-fb5364b76898" + Context(`Using mock server endpoint with timeout`, func() { + BeforeEach(func() { + testServer = httptest.NewServer(http.HandlerFunc(func(res http.ResponseWriter, req *http.Request) { + defer GinkgoRecover() + + // Verify the contents of the request + Expect(req.URL.EscapedPath()).To(Equal(getEventPath)) + Expect(req.Method).To(Equal("GET")) + + Expect(req.Header["Accept-Language"]).ToNot(BeNil()) + Expect(req.Header["Accept-Language"][0]).To(Equal(fmt.Sprintf("%v", "testString"))) + Expect(req.Header["If-None-Match"]).ToNot(BeNil()) + Expect(req.Header["If-None-Match"][0]).To(Equal(fmt.Sprintf("%v", "testString"))) + // Sleep a short time to support a timeout test + time.Sleep(100 * time.Millisecond) + + // Set mock response + res.Header().Set("Content-type", "application/json") + res.WriteHeader(200) + fmt.Fprintf(res, "%s", `{"action": "create", "api_source": "dr-automation-api", "event_id": "1cecfe43-43cd-4b1b-86be-30c2d3d2a25f", "level": "info", "message": "Service Instance created successfully", "message_data": {"anyKey": "anyValue"}, "metadata": {"anyKey": "anyValue"}, "resource": "ProvisionID", "time": "2025-06-23T07:12:49.840Z", "timestamp": "1750662769", "user": {"email": "abcuser@ibm.com", "name": "abcuser", "user_id": "IBMid-695000abc7E"}}`) + })) + }) + It(`Invoke GetEvent successfully with retries`, func() { + drAutomationServiceService, serviceErr := drautomationservicev1.NewDrAutomationServiceV1(&drautomationservicev1.DrAutomationServiceV1Options{ + URL: testServer.URL, + Authenticator: &core.NoAuthAuthenticator{}, + }) + Expect(serviceErr).To(BeNil()) + Expect(drAutomationServiceService).ToNot(BeNil()) + drAutomationServiceService.EnableRetries(0, 0) + + // Construct an instance of the GetEventOptions model + getEventOptionsModel := new(drautomationservicev1.GetEventOptions) + getEventOptionsModel.InstanceID = core.StringPtr("crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::") + getEventOptionsModel.EventID = core.StringPtr("00116b2a-9326-4024-839e-fb5364b76898") + getEventOptionsModel.AcceptLanguage = core.StringPtr("testString") + getEventOptionsModel.IfNoneMatch = core.StringPtr("testString") + getEventOptionsModel.Headers = map[string]string{"x-custom-header": "x-custom-value"} + + // Invoke operation with a Context to test a timeout error + ctx, cancelFunc := context.WithTimeout(context.Background(), 80*time.Millisecond) + defer cancelFunc() + _, _, operationErr := drAutomationServiceService.GetEventWithContext(ctx, getEventOptionsModel) + Expect(operationErr).ToNot(BeNil()) + Expect(operationErr.Error()).To(ContainSubstring("deadline exceeded")) + + // Disable retries and test again + drAutomationServiceService.DisableRetries() + result, response, operationErr := drAutomationServiceService.GetEvent(getEventOptionsModel) + Expect(operationErr).To(BeNil()) + Expect(response).ToNot(BeNil()) + Expect(result).ToNot(BeNil()) + + // Re-test the timeout error with retries disabled + ctx, cancelFunc2 := context.WithTimeout(context.Background(), 80*time.Millisecond) + defer cancelFunc2() + _, _, operationErr = drAutomationServiceService.GetEventWithContext(ctx, getEventOptionsModel) + Expect(operationErr).ToNot(BeNil()) + Expect(operationErr.Error()).To(ContainSubstring("deadline exceeded")) + }) + AfterEach(func() { + testServer.Close() + }) + }) + Context(`Using mock server endpoint`, func() { + BeforeEach(func() { + testServer = httptest.NewServer(http.HandlerFunc(func(res http.ResponseWriter, req *http.Request) { + defer GinkgoRecover() + + // Verify the contents of the request + Expect(req.URL.EscapedPath()).To(Equal(getEventPath)) + Expect(req.Method).To(Equal("GET")) + + Expect(req.Header["Accept-Language"]).ToNot(BeNil()) + Expect(req.Header["Accept-Language"][0]).To(Equal(fmt.Sprintf("%v", "testString"))) + Expect(req.Header["If-None-Match"]).ToNot(BeNil()) + Expect(req.Header["If-None-Match"][0]).To(Equal(fmt.Sprintf("%v", "testString"))) + // Set mock response + res.Header().Set("Content-type", "application/json") + res.WriteHeader(200) + fmt.Fprintf(res, "%s", `{"action": "create", "api_source": "dr-automation-api", "event_id": "1cecfe43-43cd-4b1b-86be-30c2d3d2a25f", "level": "info", "message": "Service Instance created successfully", "message_data": {"anyKey": "anyValue"}, "metadata": {"anyKey": "anyValue"}, "resource": "ProvisionID", "time": "2025-06-23T07:12:49.840Z", "timestamp": "1750662769", "user": {"email": "abcuser@ibm.com", "name": "abcuser", "user_id": "IBMid-695000abc7E"}}`) + })) + }) + It(`Invoke GetEvent successfully`, func() { + drAutomationServiceService, serviceErr := drautomationservicev1.NewDrAutomationServiceV1(&drautomationservicev1.DrAutomationServiceV1Options{ + URL: testServer.URL, + Authenticator: &core.NoAuthAuthenticator{}, + }) + Expect(serviceErr).To(BeNil()) + Expect(drAutomationServiceService).ToNot(BeNil()) + + // Invoke operation with nil options model (negative test) + result, response, operationErr := drAutomationServiceService.GetEvent(nil) + Expect(operationErr).NotTo(BeNil()) + Expect(response).To(BeNil()) + Expect(result).To(BeNil()) + + // Construct an instance of the GetEventOptions model + getEventOptionsModel := new(drautomationservicev1.GetEventOptions) + getEventOptionsModel.InstanceID = core.StringPtr("crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::") + getEventOptionsModel.EventID = core.StringPtr("00116b2a-9326-4024-839e-fb5364b76898") + getEventOptionsModel.AcceptLanguage = core.StringPtr("testString") + getEventOptionsModel.IfNoneMatch = core.StringPtr("testString") + getEventOptionsModel.Headers = map[string]string{"x-custom-header": "x-custom-value"} + + // Invoke operation with valid options model (positive test) + result, response, operationErr = drAutomationServiceService.GetEvent(getEventOptionsModel) + Expect(operationErr).To(BeNil()) + Expect(response).ToNot(BeNil()) + Expect(result).ToNot(BeNil()) + + }) + It(`Invoke GetEvent with error: Operation validation and request error`, func() { + drAutomationServiceService, serviceErr := drautomationservicev1.NewDrAutomationServiceV1(&drautomationservicev1.DrAutomationServiceV1Options{ + URL: testServer.URL, + Authenticator: &core.NoAuthAuthenticator{}, + }) + Expect(serviceErr).To(BeNil()) + Expect(drAutomationServiceService).ToNot(BeNil()) + + // Construct an instance of the GetEventOptions model + getEventOptionsModel := new(drautomationservicev1.GetEventOptions) + getEventOptionsModel.InstanceID = core.StringPtr("crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::") + getEventOptionsModel.EventID = core.StringPtr("00116b2a-9326-4024-839e-fb5364b76898") + getEventOptionsModel.AcceptLanguage = core.StringPtr("testString") + getEventOptionsModel.IfNoneMatch = core.StringPtr("testString") + getEventOptionsModel.Headers = map[string]string{"x-custom-header": "x-custom-value"} + // Invoke operation with empty URL (negative test) + err := drAutomationServiceService.SetServiceURL("") + Expect(err).To(BeNil()) + result, response, operationErr := drAutomationServiceService.GetEvent(getEventOptionsModel) + Expect(operationErr).ToNot(BeNil()) + Expect(operationErr.Error()).To(ContainSubstring(core.ERRORMSG_SERVICE_URL_MISSING)) + Expect(response).To(BeNil()) + Expect(result).To(BeNil()) + // Construct a second instance of the GetEventOptions model with no property values + getEventOptionsModelNew := new(drautomationservicev1.GetEventOptions) + // Invoke operation with invalid model (negative test) + result, response, operationErr = drAutomationServiceService.GetEvent(getEventOptionsModelNew) + Expect(operationErr).ToNot(BeNil()) + Expect(response).To(BeNil()) + Expect(result).To(BeNil()) + }) + AfterEach(func() { + testServer.Close() + }) + }) + Context(`Using mock server endpoint with missing response body`, func() { + BeforeEach(func() { + testServer = httptest.NewServer(http.HandlerFunc(func(res http.ResponseWriter, req *http.Request) { + defer GinkgoRecover() + + // Set success status code with no respoonse body + res.WriteHeader(200) + })) + }) + It(`Invoke GetEvent successfully`, func() { + drAutomationServiceService, serviceErr := drautomationservicev1.NewDrAutomationServiceV1(&drautomationservicev1.DrAutomationServiceV1Options{ + URL: testServer.URL, + Authenticator: &core.NoAuthAuthenticator{}, + }) + Expect(serviceErr).To(BeNil()) + Expect(drAutomationServiceService).ToNot(BeNil()) + + // Construct an instance of the GetEventOptions model + getEventOptionsModel := new(drautomationservicev1.GetEventOptions) + getEventOptionsModel.InstanceID = core.StringPtr("crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::") + getEventOptionsModel.EventID = core.StringPtr("00116b2a-9326-4024-839e-fb5364b76898") + getEventOptionsModel.AcceptLanguage = core.StringPtr("testString") + getEventOptionsModel.IfNoneMatch = core.StringPtr("testString") + getEventOptionsModel.Headers = map[string]string{"x-custom-header": "x-custom-value"} + + // Invoke operation + result, response, operationErr := drAutomationServiceService.GetEvent(getEventOptionsModel) + Expect(operationErr).To(BeNil()) + Expect(response).ToNot(BeNil()) + + // Verify a nil result + Expect(result).To(BeNil()) + }) + AfterEach(func() { + testServer.Close() + }) + }) + }) + Describe(`Model constructor tests`, func() { + Context(`Using a service client instance`, func() { + drAutomationServiceService, _ := drautomationservicev1.NewDrAutomationServiceV1(&drautomationservicev1.DrAutomationServiceV1Options{ + URL: "http://drautomationservicev1modelgenerator.com", + Authenticator: &core.NoAuthAuthenticator{}, + }) + It(`Invoke NewCreateApikeyOptions successfully`, func() { + // Construct an instance of the CreateApikeyOptions model + instanceID := "crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::" + createApikeyOptionsAPIKey := "abcdefrg_izklmnop_fxbEED" + createApikeyOptionsModel := drAutomationServiceService.NewCreateApikeyOptions(instanceID, createApikeyOptionsAPIKey) + createApikeyOptionsModel.SetInstanceID("crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::") + createApikeyOptionsModel.SetAPIKey("abcdefrg_izklmnop_fxbEED") + createApikeyOptionsModel.SetAcceptLanguage("testString") + createApikeyOptionsModel.SetIfNoneMatch("testString") + createApikeyOptionsModel.SetHeaders(map[string]string{"foo": "bar"}) + Expect(createApikeyOptionsModel).ToNot(BeNil()) + Expect(createApikeyOptionsModel.InstanceID).To(Equal(core.StringPtr("crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::"))) + Expect(createApikeyOptionsModel.APIKey).To(Equal(core.StringPtr("abcdefrg_izklmnop_fxbEED"))) + Expect(createApikeyOptionsModel.AcceptLanguage).To(Equal(core.StringPtr("testString"))) + Expect(createApikeyOptionsModel.IfNoneMatch).To(Equal(core.StringPtr("testString"))) + Expect(createApikeyOptionsModel.Headers).To(Equal(map[string]string{"foo": "bar"})) + }) + It(`Invoke NewCreateManageDrOptions successfully`, func() { + // Construct an instance of the CreateManageDrOptions model + instanceID := "crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::" + createManageDrOptionsModel := drAutomationServiceService.NewCreateManageDrOptions(instanceID) + createManageDrOptionsModel.SetInstanceID("crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::") + createManageDrOptionsModel.SetAPIKey("testString") + createManageDrOptionsModel.SetClientID("d9f2c83a-97d2-4b14-bf62-8eaecc67a122") + createManageDrOptionsModel.SetClientSecret("N8lQ4tP2xM1yT5rS8wK6qR9dD7vF1hU4sA3bE2jG0pL9oX7yC") + createManageDrOptionsModel.SetGUID("123e4567-e89b-12d3-a456-426614174000") + createManageDrOptionsModel.SetLocationID("dal10") + createManageDrOptionsModel.SetMachineType("bx2-4x16") + createManageDrOptionsModel.SetOrchestratorHa(true) + createManageDrOptionsModel.SetOrchestratorLocationType("off-premises") + createManageDrOptionsModel.SetOrchestratorName("adminUser") + createManageDrOptionsModel.SetOrchestratorPassword("testString") + createManageDrOptionsModel.SetOrchestratorWorkspaceID("orch-workspace-01") + createManageDrOptionsModel.SetOrchestratorWorkspaceLocation("us-south") + createManageDrOptionsModel.SetProxyIP("10.40.30.10:8888") + createManageDrOptionsModel.SetRegionID("us-south") + createManageDrOptionsModel.SetResourceInstance("crn:v1:bluemix:public:resource-controller::res123") + createManageDrOptionsModel.SetSecondaryWorkspaceID("secondary-workspace789") + createManageDrOptionsModel.SetSecret("testString") + createManageDrOptionsModel.SetSecretGroup("default-secret-group") + createManageDrOptionsModel.SetSSHKeyName("my-ssh-key") + createManageDrOptionsModel.SetStandbyMachineType("bx2-8x32") + createManageDrOptionsModel.SetStandbyOrchestratorName("standbyAdmin") + createManageDrOptionsModel.SetStandbyOrchestratorWorkspaceID("orch-standby-02") + createManageDrOptionsModel.SetStandbyOrchestratorWorkspaceLocation("us-east") + createManageDrOptionsModel.SetStandbyTier("Premium") + createManageDrOptionsModel.SetTenantName("xxx.ibm.com") + createManageDrOptionsModel.SetTier("Standard") + createManageDrOptionsModel.SetStandByRedeploy("testString") + createManageDrOptionsModel.SetAcceptLanguage("testString") + createManageDrOptionsModel.SetIfNoneMatch("testString") + createManageDrOptionsModel.SetAcceptsIncomplete(true) + createManageDrOptionsModel.SetHeaders(map[string]string{"foo": "bar"}) + Expect(createManageDrOptionsModel).ToNot(BeNil()) + Expect(createManageDrOptionsModel.InstanceID).To(Equal(core.StringPtr("crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::"))) + Expect(createManageDrOptionsModel.APIKey).To(Equal(core.StringPtr("testString"))) + Expect(createManageDrOptionsModel.ClientID).To(Equal(core.StringPtr("d9f2c83a-97d2-4b14-bf62-8eaecc67a122"))) + Expect(createManageDrOptionsModel.ClientSecret).To(Equal(core.StringPtr("N8lQ4tP2xM1yT5rS8wK6qR9dD7vF1hU4sA3bE2jG0pL9oX7yC"))) + Expect(createManageDrOptionsModel.GUID).To(Equal(core.StringPtr("123e4567-e89b-12d3-a456-426614174000"))) + Expect(createManageDrOptionsModel.LocationID).To(Equal(core.StringPtr("dal10"))) + Expect(createManageDrOptionsModel.MachineType).To(Equal(core.StringPtr("bx2-4x16"))) + Expect(createManageDrOptionsModel.OrchestratorHa).To(Equal(core.BoolPtr(true))) + Expect(createManageDrOptionsModel.OrchestratorLocationType).To(Equal(core.StringPtr("off-premises"))) + Expect(createManageDrOptionsModel.OrchestratorName).To(Equal(core.StringPtr("adminUser"))) + Expect(createManageDrOptionsModel.OrchestratorPassword).To(Equal(core.StringPtr("testString"))) + Expect(createManageDrOptionsModel.OrchestratorWorkspaceID).To(Equal(core.StringPtr("orch-workspace-01"))) + Expect(createManageDrOptionsModel.OrchestratorWorkspaceLocation).To(Equal(core.StringPtr("us-south"))) + Expect(createManageDrOptionsModel.ProxyIP).To(Equal(core.StringPtr("10.40.30.10:8888"))) + Expect(createManageDrOptionsModel.RegionID).To(Equal(core.StringPtr("us-south"))) + Expect(createManageDrOptionsModel.ResourceInstance).To(Equal(core.StringPtr("crn:v1:bluemix:public:resource-controller::res123"))) + Expect(createManageDrOptionsModel.SecondaryWorkspaceID).To(Equal(core.StringPtr("secondary-workspace789"))) + Expect(createManageDrOptionsModel.Secret).To(Equal(core.StringPtr("testString"))) + Expect(createManageDrOptionsModel.SecretGroup).To(Equal(core.StringPtr("default-secret-group"))) + Expect(createManageDrOptionsModel.SSHKeyName).To(Equal(core.StringPtr("my-ssh-key"))) + Expect(createManageDrOptionsModel.StandbyMachineType).To(Equal(core.StringPtr("bx2-8x32"))) + Expect(createManageDrOptionsModel.StandbyOrchestratorName).To(Equal(core.StringPtr("standbyAdmin"))) + Expect(createManageDrOptionsModel.StandbyOrchestratorWorkspaceID).To(Equal(core.StringPtr("orch-standby-02"))) + Expect(createManageDrOptionsModel.StandbyOrchestratorWorkspaceLocation).To(Equal(core.StringPtr("us-east"))) + Expect(createManageDrOptionsModel.StandbyTier).To(Equal(core.StringPtr("Premium"))) + Expect(createManageDrOptionsModel.TenantName).To(Equal(core.StringPtr("xxx.ibm.com"))) + Expect(createManageDrOptionsModel.Tier).To(Equal(core.StringPtr("Standard"))) + Expect(createManageDrOptionsModel.StandByRedeploy).To(Equal(core.StringPtr("testString"))) + Expect(createManageDrOptionsModel.AcceptLanguage).To(Equal(core.StringPtr("testString"))) + Expect(createManageDrOptionsModel.IfNoneMatch).To(Equal(core.StringPtr("testString"))) + Expect(createManageDrOptionsModel.AcceptsIncomplete).To(Equal(core.BoolPtr(true))) + Expect(createManageDrOptionsModel.Headers).To(Equal(map[string]string{"foo": "bar"})) + }) + It(`Invoke NewGetApikeyOptions successfully`, func() { + // Construct an instance of the GetApikeyOptions model + instanceID := "crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::" + getApikeyOptionsModel := drAutomationServiceService.NewGetApikeyOptions(instanceID) + getApikeyOptionsModel.SetInstanceID("crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::") + getApikeyOptionsModel.SetAcceptLanguage("testString") + getApikeyOptionsModel.SetIfNoneMatch("testString") + getApikeyOptionsModel.SetHeaders(map[string]string{"foo": "bar"}) + Expect(getApikeyOptionsModel).ToNot(BeNil()) + Expect(getApikeyOptionsModel.InstanceID).To(Equal(core.StringPtr("crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::"))) + Expect(getApikeyOptionsModel.AcceptLanguage).To(Equal(core.StringPtr("testString"))) + Expect(getApikeyOptionsModel.IfNoneMatch).To(Equal(core.StringPtr("testString"))) + Expect(getApikeyOptionsModel.Headers).To(Equal(map[string]string{"foo": "bar"})) + }) + It(`Invoke NewGetDrGrsLocationPairOptions successfully`, func() { + // Construct an instance of the GetDrGrsLocationPairOptions model + instanceID := "crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::" + getDrGrsLocationPairOptionsModel := drAutomationServiceService.NewGetDrGrsLocationPairOptions(instanceID) + getDrGrsLocationPairOptionsModel.SetInstanceID("crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::") + getDrGrsLocationPairOptionsModel.SetAcceptLanguage("testString") + getDrGrsLocationPairOptionsModel.SetIfNoneMatch("testString") + getDrGrsLocationPairOptionsModel.SetHeaders(map[string]string{"foo": "bar"}) + Expect(getDrGrsLocationPairOptionsModel).ToNot(BeNil()) + Expect(getDrGrsLocationPairOptionsModel.InstanceID).To(Equal(core.StringPtr("crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::"))) + Expect(getDrGrsLocationPairOptionsModel.AcceptLanguage).To(Equal(core.StringPtr("testString"))) + Expect(getDrGrsLocationPairOptionsModel.IfNoneMatch).To(Equal(core.StringPtr("testString"))) + Expect(getDrGrsLocationPairOptionsModel.Headers).To(Equal(map[string]string{"foo": "bar"})) + }) + It(`Invoke NewGetDrLocationsOptions successfully`, func() { + // Construct an instance of the GetDrLocationsOptions model + instanceID := "crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::" + getDrLocationsOptionsModel := drAutomationServiceService.NewGetDrLocationsOptions(instanceID) + getDrLocationsOptionsModel.SetInstanceID("crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::") + getDrLocationsOptionsModel.SetAcceptLanguage("testString") + getDrLocationsOptionsModel.SetIfNoneMatch("testString") + getDrLocationsOptionsModel.SetHeaders(map[string]string{"foo": "bar"}) + Expect(getDrLocationsOptionsModel).ToNot(BeNil()) + Expect(getDrLocationsOptionsModel.InstanceID).To(Equal(core.StringPtr("crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::"))) + Expect(getDrLocationsOptionsModel.AcceptLanguage).To(Equal(core.StringPtr("testString"))) + Expect(getDrLocationsOptionsModel.IfNoneMatch).To(Equal(core.StringPtr("testString"))) + Expect(getDrLocationsOptionsModel.Headers).To(Equal(map[string]string{"foo": "bar"})) + }) + It(`Invoke NewGetDrManagedVMOptions successfully`, func() { + // Construct an instance of the GetDrManagedVMOptions model + instanceID := "crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::" + getDrManagedVMOptionsModel := drAutomationServiceService.NewGetDrManagedVMOptions(instanceID) + getDrManagedVMOptionsModel.SetInstanceID("crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::") + getDrManagedVMOptionsModel.SetAcceptLanguage("testString") + getDrManagedVMOptionsModel.SetIfNoneMatch("testString") + getDrManagedVMOptionsModel.SetHeaders(map[string]string{"foo": "bar"}) + Expect(getDrManagedVMOptionsModel).ToNot(BeNil()) + Expect(getDrManagedVMOptionsModel.InstanceID).To(Equal(core.StringPtr("crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::"))) + Expect(getDrManagedVMOptionsModel.AcceptLanguage).To(Equal(core.StringPtr("testString"))) + Expect(getDrManagedVMOptionsModel.IfNoneMatch).To(Equal(core.StringPtr("testString"))) + Expect(getDrManagedVMOptionsModel.Headers).To(Equal(map[string]string{"foo": "bar"})) + }) + It(`Invoke NewGetDrSummaryOptions successfully`, func() { + // Construct an instance of the GetDrSummaryOptions model + instanceID := "crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::" + getDrSummaryOptionsModel := drAutomationServiceService.NewGetDrSummaryOptions(instanceID) + getDrSummaryOptionsModel.SetInstanceID("crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::") + getDrSummaryOptionsModel.SetAcceptLanguage("testString") + getDrSummaryOptionsModel.SetIfNoneMatch("testString") + getDrSummaryOptionsModel.SetHeaders(map[string]string{"foo": "bar"}) + Expect(getDrSummaryOptionsModel).ToNot(BeNil()) + Expect(getDrSummaryOptionsModel.InstanceID).To(Equal(core.StringPtr("crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::"))) + Expect(getDrSummaryOptionsModel.AcceptLanguage).To(Equal(core.StringPtr("testString"))) + Expect(getDrSummaryOptionsModel.IfNoneMatch).To(Equal(core.StringPtr("testString"))) + Expect(getDrSummaryOptionsModel.Headers).To(Equal(map[string]string{"foo": "bar"})) + }) + It(`Invoke NewGetEventOptions successfully`, func() { + // Construct an instance of the GetEventOptions model + instanceID := "crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::" + eventID := "00116b2a-9326-4024-839e-fb5364b76898" + getEventOptionsModel := drAutomationServiceService.NewGetEventOptions(instanceID, eventID) + getEventOptionsModel.SetInstanceID("crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::") + getEventOptionsModel.SetEventID("00116b2a-9326-4024-839e-fb5364b76898") + getEventOptionsModel.SetAcceptLanguage("testString") + getEventOptionsModel.SetIfNoneMatch("testString") + getEventOptionsModel.SetHeaders(map[string]string{"foo": "bar"}) + Expect(getEventOptionsModel).ToNot(BeNil()) + Expect(getEventOptionsModel.InstanceID).To(Equal(core.StringPtr("crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::"))) + Expect(getEventOptionsModel.EventID).To(Equal(core.StringPtr("00116b2a-9326-4024-839e-fb5364b76898"))) + Expect(getEventOptionsModel.AcceptLanguage).To(Equal(core.StringPtr("testString"))) + Expect(getEventOptionsModel.IfNoneMatch).To(Equal(core.StringPtr("testString"))) + Expect(getEventOptionsModel.Headers).To(Equal(map[string]string{"foo": "bar"})) + }) + It(`Invoke NewGetLastOperationOptions successfully`, func() { + // Construct an instance of the GetLastOperationOptions model + instanceID := "crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::" + getLastOperationOptionsModel := drAutomationServiceService.NewGetLastOperationOptions(instanceID) + getLastOperationOptionsModel.SetInstanceID("crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::") + getLastOperationOptionsModel.SetAcceptLanguage("testString") + getLastOperationOptionsModel.SetIfNoneMatch("testString") + getLastOperationOptionsModel.SetHeaders(map[string]string{"foo": "bar"}) + Expect(getLastOperationOptionsModel).ToNot(BeNil()) + Expect(getLastOperationOptionsModel.InstanceID).To(Equal(core.StringPtr("crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::"))) + Expect(getLastOperationOptionsModel.AcceptLanguage).To(Equal(core.StringPtr("testString"))) + Expect(getLastOperationOptionsModel.IfNoneMatch).To(Equal(core.StringPtr("testString"))) + Expect(getLastOperationOptionsModel.Headers).To(Equal(map[string]string{"foo": "bar"})) + }) + It(`Invoke NewGetMachineTypeOptions successfully`, func() { + // Construct an instance of the GetMachineTypeOptions model + instanceID := "crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::" + primaryWorkspaceName := "Test-workspace-wdc06" + getMachineTypeOptionsModel := drAutomationServiceService.NewGetMachineTypeOptions(instanceID, primaryWorkspaceName) + getMachineTypeOptionsModel.SetInstanceID("crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::") + getMachineTypeOptionsModel.SetPrimaryWorkspaceName("Test-workspace-wdc06") + getMachineTypeOptionsModel.SetAcceptLanguage("testString") + getMachineTypeOptionsModel.SetIfNoneMatch("testString") + getMachineTypeOptionsModel.SetStandbyWorkspaceName("Test-workspace-wdc07") + getMachineTypeOptionsModel.SetHeaders(map[string]string{"foo": "bar"}) + Expect(getMachineTypeOptionsModel).ToNot(BeNil()) + Expect(getMachineTypeOptionsModel.InstanceID).To(Equal(core.StringPtr("crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::"))) + Expect(getMachineTypeOptionsModel.PrimaryWorkspaceName).To(Equal(core.StringPtr("Test-workspace-wdc06"))) + Expect(getMachineTypeOptionsModel.AcceptLanguage).To(Equal(core.StringPtr("testString"))) + Expect(getMachineTypeOptionsModel.IfNoneMatch).To(Equal(core.StringPtr("testString"))) + Expect(getMachineTypeOptionsModel.StandbyWorkspaceName).To(Equal(core.StringPtr("Test-workspace-wdc07"))) + Expect(getMachineTypeOptionsModel.Headers).To(Equal(map[string]string{"foo": "bar"})) + }) + It(`Invoke NewGetManageDrOptions successfully`, func() { + // Construct an instance of the GetManageDrOptions model + instanceID := "crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::" + getManageDrOptionsModel := drAutomationServiceService.NewGetManageDrOptions(instanceID) + getManageDrOptionsModel.SetInstanceID("crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::") + getManageDrOptionsModel.SetAcceptLanguage("testString") + getManageDrOptionsModel.SetIfNoneMatch("testString") + getManageDrOptionsModel.SetHeaders(map[string]string{"foo": "bar"}) + Expect(getManageDrOptionsModel).ToNot(BeNil()) + Expect(getManageDrOptionsModel.InstanceID).To(Equal(core.StringPtr("crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::"))) + Expect(getManageDrOptionsModel.AcceptLanguage).To(Equal(core.StringPtr("testString"))) + Expect(getManageDrOptionsModel.IfNoneMatch).To(Equal(core.StringPtr("testString"))) + Expect(getManageDrOptionsModel.Headers).To(Equal(map[string]string{"foo": "bar"})) + }) + It(`Invoke NewGetPowervsWorkspacesOptions successfully`, func() { + // Construct an instance of the GetPowervsWorkspacesOptions model + instanceID := "crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::" + locationID := "testString" + getPowervsWorkspacesOptionsModel := drAutomationServiceService.NewGetPowervsWorkspacesOptions(instanceID, locationID) + getPowervsWorkspacesOptionsModel.SetInstanceID("crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::") + getPowervsWorkspacesOptionsModel.SetLocationID("testString") + getPowervsWorkspacesOptionsModel.SetIfNoneMatch("testString") + getPowervsWorkspacesOptionsModel.SetHeaders(map[string]string{"foo": "bar"}) + Expect(getPowervsWorkspacesOptionsModel).ToNot(BeNil()) + Expect(getPowervsWorkspacesOptionsModel.InstanceID).To(Equal(core.StringPtr("crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::"))) + Expect(getPowervsWorkspacesOptionsModel.LocationID).To(Equal(core.StringPtr("testString"))) + Expect(getPowervsWorkspacesOptionsModel.IfNoneMatch).To(Equal(core.StringPtr("testString"))) + Expect(getPowervsWorkspacesOptionsModel.Headers).To(Equal(map[string]string{"foo": "bar"})) + }) + It(`Invoke NewListEventsOptions successfully`, func() { + // Construct an instance of the ListEventsOptions model + instanceID := "crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::" + listEventsOptionsModel := drAutomationServiceService.NewListEventsOptions(instanceID) + listEventsOptionsModel.SetInstanceID("crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::") + listEventsOptionsModel.SetTime("2025-06-19T23:59:59Z") + listEventsOptionsModel.SetFromTime("2025-06-19T00:00:00Z") + listEventsOptionsModel.SetToTime("2025-06-19T23:59:59Z") + listEventsOptionsModel.SetAcceptLanguage("testString") + listEventsOptionsModel.SetIfNoneMatch("testString") + listEventsOptionsModel.SetHeaders(map[string]string{"foo": "bar"}) + Expect(listEventsOptionsModel).ToNot(BeNil()) + Expect(listEventsOptionsModel.InstanceID).To(Equal(core.StringPtr("crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::"))) + Expect(listEventsOptionsModel.Time).To(Equal(core.StringPtr("2025-06-19T23:59:59Z"))) + Expect(listEventsOptionsModel.FromTime).To(Equal(core.StringPtr("2025-06-19T00:00:00Z"))) + Expect(listEventsOptionsModel.ToTime).To(Equal(core.StringPtr("2025-06-19T23:59:59Z"))) + Expect(listEventsOptionsModel.AcceptLanguage).To(Equal(core.StringPtr("testString"))) + Expect(listEventsOptionsModel.IfNoneMatch).To(Equal(core.StringPtr("testString"))) + Expect(listEventsOptionsModel.Headers).To(Equal(map[string]string{"foo": "bar"})) + }) + It(`Invoke NewUpdateApikeyOptions successfully`, func() { + // Construct an instance of the UpdateApikeyOptions model + instanceID := "crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::" + updateApikeyOptionsAPIKey := "adfadfdsafsdfdsf" + updateApikeyOptionsModel := drAutomationServiceService.NewUpdateApikeyOptions(instanceID, updateApikeyOptionsAPIKey) + updateApikeyOptionsModel.SetInstanceID("crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::") + updateApikeyOptionsModel.SetAPIKey("adfadfdsafsdfdsf") + updateApikeyOptionsModel.SetAcceptLanguage("testString") + updateApikeyOptionsModel.SetIfNoneMatch("testString") + updateApikeyOptionsModel.SetHeaders(map[string]string{"foo": "bar"}) + Expect(updateApikeyOptionsModel).ToNot(BeNil()) + Expect(updateApikeyOptionsModel.InstanceID).To(Equal(core.StringPtr("crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::"))) + Expect(updateApikeyOptionsModel.APIKey).To(Equal(core.StringPtr("adfadfdsafsdfdsf"))) + Expect(updateApikeyOptionsModel.AcceptLanguage).To(Equal(core.StringPtr("testString"))) + Expect(updateApikeyOptionsModel.IfNoneMatch).To(Equal(core.StringPtr("testString"))) + Expect(updateApikeyOptionsModel.Headers).To(Equal(map[string]string{"foo": "bar"})) + }) + }) + }) + Describe(`Utility function tests`, func() { + It(`Invoke CreateMockByteArray() successfully`, func() { + mockByteArray := CreateMockByteArray("VGhpcyBpcyBhIHRlc3Qgb2YgdGhlIGVtZXJnZW5jeSBicm9hZGNhc3Qgc3lzdGVt") + Expect(mockByteArray).ToNot(BeNil()) + }) + It(`Invoke CreateMockUUID() successfully`, func() { + mockUUID := CreateMockUUID("9fab83da-98cb-4f18-a7ba-b6f0435c9673") + Expect(mockUUID).ToNot(BeNil()) + }) + It(`Invoke CreateMockReader() successfully`, func() { + mockReader := CreateMockReader("This is a test.") + Expect(mockReader).ToNot(BeNil()) + }) + It(`Invoke CreateMockDate() successfully`, func() { + mockDate := CreateMockDate("2019-01-01") + Expect(mockDate).ToNot(BeNil()) + }) + It(`Invoke CreateMockDateTime() successfully`, func() { + mockDateTime := CreateMockDateTime("2019-01-01T12:00:00.000Z") + Expect(mockDateTime).ToNot(BeNil()) + }) + }) +}) + +// +// Utility functions used by the generated test code +// + +func CreateMockByteArray(encodedString string) *[]byte { + ba, err := base64.StdEncoding.DecodeString(encodedString) + if err != nil { + panic(err) + } + return &ba +} + +func CreateMockUUID(mockData string) *strfmt.UUID { + uuid := strfmt.UUID(mockData) + return &uuid +} + +func CreateMockReader(mockData string) io.ReadCloser { + return io.NopCloser(bytes.NewReader([]byte(mockData))) +} + +func CreateMockDate(mockData string) *strfmt.Date { + d, err := core.ParseDate(mockData) + if err != nil { + return nil + } + return &d +} + +func CreateMockDateTime(mockData string) *strfmt.DateTime { + d, err := core.ParseDateTime(mockData) + if err != nil { + return nil + } + return &d +} + +func SetTestEnvironment(testEnvironment map[string]string) { + for key, value := range testEnvironment { + os.Setenv(key, value) + } +} + +func ClearTestEnvironment(testEnvironment map[string]string) { + for key := range testEnvironment { + os.Unsetenv(key) + } +} diff --git a/ibm/service/drautomationservice/dra-go-sdk/go.mod b/ibm/service/drautomationservice/dra-go-sdk/go.mod new file mode 100644 index 0000000000..e3951b3d3c --- /dev/null +++ b/ibm/service/drautomationservice/dra-go-sdk/go.mod @@ -0,0 +1,41 @@ +// module github.ibm.com/DRAutomation/dra-go-sdk + +go 1.24.0 + +toolchain go1.24.9 + +require ( + github.com/IBM/go-sdk-core/v5 v5.21.0 + github.com/IBM/platform-services-go-sdk v0.87.0 + github.com/go-openapi/strfmt v0.24.1-0.20250928163735-5c9b6bdeb47c + github.com/onsi/ginkgo v1.16.5 + github.com/onsi/gomega v1.37.0 + github.com/stretchr/testify v1.11.1 +) + +require ( + github.com/davecgh/go-spew v1.1.1 // indirect + github.com/fsnotify/fsnotify v1.6.0 // indirect + github.com/gabriel-vasile/mimetype v1.4.9 // indirect + github.com/go-openapi/errors v0.22.3 // indirect + github.com/go-playground/locales v0.14.1 // indirect + github.com/go-playground/universal-translator v0.18.1 // indirect + github.com/go-playground/validator/v10 v10.26.0 // indirect + github.com/go-viper/mapstructure/v2 v2.4.0 // indirect + github.com/google/go-cmp v0.7.0 // indirect + github.com/google/uuid v1.6.0 // indirect + github.com/hashicorp/go-cleanhttp v0.5.2 // indirect + github.com/hashicorp/go-retryablehttp v0.7.7 // indirect + github.com/leodido/go-urn v1.4.0 // indirect + github.com/nxadm/tail v1.4.8 // indirect + github.com/oklog/ulid v1.3.1 // indirect + github.com/pmezard/go-difflib v1.0.0 // indirect + go.mongodb.org/mongo-driver v1.17.4 // indirect + golang.org/x/crypto v0.42.0 // indirect + golang.org/x/net v0.44.0 // indirect + golang.org/x/sys v0.36.0 // indirect + golang.org/x/text v0.29.0 // indirect + gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7 // indirect + gopkg.in/yaml.v3 v3.0.1 // indirect + sigs.k8s.io/yaml v1.4.0 // indirect +) diff --git a/ibm/service/drautomationservice/dra-go-sdk/go.sum b/ibm/service/drautomationservice/dra-go-sdk/go.sum new file mode 100644 index 0000000000..117f1476d0 --- /dev/null +++ b/ibm/service/drautomationservice/dra-go-sdk/go.sum @@ -0,0 +1,155 @@ +github.com/IBM/go-sdk-core/v5 v5.21.0 h1:DUnYhvC4SoC8T84rx5omnhY3+xcQg/Whyoa3mDPIMkk= +github.com/IBM/go-sdk-core/v5 v5.21.0/go.mod h1:Q3BYO6iDA2zweQPDGbNTtqft5tDcEpm6RTuqMlPcvbw= +github.com/IBM/platform-services-go-sdk v0.87.0 h1:hLx/I7n7cb1CyAXdb2qypmCoFiYuxh2g50qN8OGnEQc= +github.com/IBM/platform-services-go-sdk v0.87.0/go.mod h1:aGD045m6I8pfcB77wft8w2cHqWOJjcM3YSSV55BX0Js= +github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= +github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/fatih/color v1.16.0 h1:zmkK9Ngbjj+K0yRhTVONQh1p/HknKYSlNT+vZCzyokM= +github.com/fatih/color v1.16.0/go.mod h1:fL2Sau1YI5c0pdGEVCbKQbLXB6edEj1ZgiY4NijnWvE= +github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= +github.com/fsnotify/fsnotify v1.4.9/go.mod h1:znqG4EE+3YCdAaPaxE2ZRY/06pZUdp0tY4IgpuI1SZQ= +github.com/fsnotify/fsnotify v1.6.0 h1:n+5WquG0fcWoWp6xPWfHdbskMCQaFnG6PfBrh1Ky4HY= +github.com/fsnotify/fsnotify v1.6.0/go.mod h1:sl3t1tCWJFWoRz9R8WJCbQihKKwmorjAbSClcnxKAGw= +github.com/gabriel-vasile/mimetype v1.4.9 h1:5k+WDwEsD9eTLL8Tz3L0VnmVh9QxGjRmjBvAG7U/oYY= +github.com/gabriel-vasile/mimetype v1.4.9/go.mod h1:WnSQhFKJuBlRyLiKohA/2DtIlPFAbguNaG7QCHcyGok= +github.com/go-logr/logr v1.4.2 h1:6pFjapn8bFcIbiKo3XT4j/BhANplGihG6tvd+8rYgrY= +github.com/go-logr/logr v1.4.2/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= +github.com/go-openapi/errors v0.22.3 h1:k6Hxa5Jg1TUyZnOwV2Lh81j8ayNw5VVYLvKrp4zFKFs= +github.com/go-openapi/errors v0.22.3/go.mod h1:+WvbaBBULWCOna//9B9TbLNGSFOfF8lY9dw4hGiEiKQ= +github.com/go-openapi/strfmt v0.24.1-0.20250928163735-5c9b6bdeb47c h1:2qXCCFMLfKkjdZF/87VmmKUYafETRXdSE/OxrghKAfA= +github.com/go-openapi/strfmt v0.24.1-0.20250928163735-5c9b6bdeb47c/go.mod h1:MXNXmOAf2skBOkUyTR/pzp5/DYMJTE/VHx8zA8kPq1c= +github.com/go-playground/assert/v2 v2.2.0 h1:JvknZsQTYeFEAhQwI4qEt9cyV5ONwRHC+lYKSsYSR8s= +github.com/go-playground/assert/v2 v2.2.0/go.mod h1:VDjEfimB/XKnb+ZQfWdccd7VUvScMdVu0Titje2rxJ4= +github.com/go-playground/locales v0.14.1 h1:EWaQ/wswjilfKLTECiXz7Rh+3BjFhfDFKv/oXslEjJA= +github.com/go-playground/locales v0.14.1/go.mod h1:hxrqLVvrK65+Rwrd5Fc6F2O76J/NuW9t0sjnWqG1slY= +github.com/go-playground/universal-translator v0.18.1 h1:Bcnm0ZwsGyWbCzImXv+pAJnYK9S473LQFuzCbDbfSFY= +github.com/go-playground/universal-translator v0.18.1/go.mod h1:xekY+UJKNuX9WP91TpwSH2VMlDf28Uj24BCp08ZFTUY= +github.com/go-playground/validator/v10 v10.26.0 h1:SP05Nqhjcvz81uJaRfEV0YBSSSGMc/iMaVtFbr3Sw2k= +github.com/go-playground/validator/v10 v10.26.0/go.mod h1:I5QpIEbmr8On7W0TktmJAumgzX4CA1XNl4ZmDuVHKKo= +github.com/go-task/slim-sprig v0.0.0-20210107165309-348f09dbbbc0 h1:p104kn46Q8WdvHunIJ9dAyjPVtrBPhSr3KT2yUst43I= +github.com/go-task/slim-sprig v0.0.0-20210107165309-348f09dbbbc0/go.mod h1:fyg7847qk6SyHyPtNmDHnmrv/HOrqktSC+C9fM+CJOE= +github.com/go-task/slim-sprig/v3 v3.0.0 h1:sUs3vkvUymDpBKi3qH1YSqBQk9+9D/8M2mN1vB6EwHI= +github.com/go-task/slim-sprig/v3 v3.0.0/go.mod h1:W848ghGpv3Qj3dhTPRyJypKRiqCdHZiAzKg9hl15HA8= +github.com/go-viper/mapstructure/v2 v2.4.0 h1:EBsztssimR/CONLSZZ04E8qAkxNYq4Qp9LvH92wZUgs= +github.com/go-viper/mapstructure/v2 v2.4.0/go.mod h1:oJDH3BJKyqBA2TXFhDsKDGDTlndYOZ6rGS0BRZIxGhM= +github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/golang/protobuf v1.4.0-rc.1/go.mod h1:ceaxUfeHdC40wWswd/P6IGgMaK3YpKi5j83Wpe3EHw8= +github.com/golang/protobuf v1.4.0-rc.1.0.20200221234624-67d41d38c208/go.mod h1:xKAWHe0F5eneWXFV3EuXVDTCmh+JuBKY0li0aMyXATA= +github.com/golang/protobuf v1.4.0-rc.2/go.mod h1:LlEzMj4AhA7rCAGe4KMBDvJI+AwstrUpVNzEA03Pprs= +github.com/golang/protobuf v1.4.0-rc.4.0.20200313231945-b860323f09d0/go.mod h1:WU3c8KckQ9AFe+yFwt9sWVRKCVIyN9cPHBJSNnbL67w= +github.com/golang/protobuf v1.4.0/go.mod h1:jodUvKwWbYaEsadDk5Fwe5c77LiNKVO9IDvqG2KuDX0= +github.com/golang/protobuf v1.4.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= +github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= +github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= +github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= +github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8= +github.com/google/go-cmp v0.7.0/go.mod h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX3N/iU= +github.com/google/pprof v0.0.0-20241210010833-40e02aabc2ad h1:a6HEuzUHeKH6hwfN/ZoQgRgVIWFJljSWa/zetS2WTvg= +github.com/google/pprof v0.0.0-20241210010833-40e02aabc2ad/go.mod h1:vavhavw2zAxS5dIdcRluK6cSGGPlZynqzFM8NdvU144= +github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= +github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/hashicorp/go-cleanhttp v0.5.2 h1:035FKYIWjmULyFRBKPs8TBQoi0x6d9G4xc9neXJWAZQ= +github.com/hashicorp/go-cleanhttp v0.5.2/go.mod h1:kO/YDlP8L1346E6Sodw+PrpBSV4/SoxCXGY6BqNFT48= +github.com/hashicorp/go-hclog v1.6.3 h1:Qr2kF+eVWjTiYmU7Y31tYlP1h0q/X3Nl3tPGdaB11/k= +github.com/hashicorp/go-hclog v1.6.3/go.mod h1:W4Qnvbt70Wk/zYJryRzDRU/4r0kIg0PVHBcfoyhpF5M= +github.com/hashicorp/go-retryablehttp v0.7.7 h1:C8hUCYzor8PIfXHa4UrZkU4VvK8o9ISHxT2Q8+VepXU= +github.com/hashicorp/go-retryablehttp v0.7.7/go.mod h1:pkQpWZeYWskR+D1tR2O5OcBFOxfA7DoAO6xtkuQnHTk= +github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU= +github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= +github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= +github.com/leodido/go-urn v1.4.0 h1:WT9HwE9SGECu3lg4d/dIA+jxlljEa1/ffXKmRjqdmIQ= +github.com/leodido/go-urn v1.4.0/go.mod h1:bvxc+MVxLKB4z00jd1z+Dvzr47oO32F/QSNjSBOlFxI= +github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA= +github.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovkB8vQcUbaXHg= +github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY= +github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= +github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e h1:fD57ERR4JtEqsWbfPhv4DMiApHyliiK5xCTNVSPiaAs= +github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno= +github.com/nxadm/tail v1.4.4/go.mod h1:kenIhsEOeOJmVchQTgglprH7qJGnHDVpk1VPCcaMI8A= +github.com/nxadm/tail v1.4.8 h1:nPr65rt6Y5JFSKQO7qToXr7pePgD6Gwiw05lkbyAQTE= +github.com/nxadm/tail v1.4.8/go.mod h1:+ncqLTQzXmGhMZNUePPaPqPvBxHAIsmXswZKocGu+AU= +github.com/oklog/ulid v1.3.1 h1:EGfNDEx6MqHz8B3uNV6QAib1UR2Lm97sHi3ocA6ESJ4= +github.com/oklog/ulid v1.3.1/go.mod h1:CirwcVhetQ6Lv90oh/F+FBtV6XMibvdAFo93nm5qn4U= +github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= +github.com/onsi/ginkgo v1.12.1/go.mod h1:zj2OWP4+oCPe1qIXoGWkgMRwljMUYCdkwsT2108oapk= +github.com/onsi/ginkgo v1.16.5 h1:8xi0RTUf59SOSfEtZMvwTvXYMzG4gV23XVHOZiXNtnE= +github.com/onsi/ginkgo v1.16.5/go.mod h1:+E8gABHa3K6zRBolWtd+ROzc/U5bkGt0FwiG042wbpU= +github.com/onsi/ginkgo/v2 v2.23.3 h1:edHxnszytJ4lD9D5Jjc4tiDkPBZ3siDeJJkUZJJVkp0= +github.com/onsi/ginkgo/v2 v2.23.3/go.mod h1:zXTP6xIp3U8aVuXN8ENK9IXRaTjFnpVB9mGmaSRvxnM= +github.com/onsi/gomega v1.7.1/go.mod h1:XdKZgCCFLUoM/7CFJVPcG8C1xQ1AJ0vpAezJrB7JYyY= +github.com/onsi/gomega v1.10.1/go.mod h1:iN09h71vgCQne3DLsj+A5owkum+a2tYe+TOCB1ybHNo= +github.com/onsi/gomega v1.37.0 h1:CdEG8g0S133B4OswTDC/5XPSzE1OeP29QOioj2PID2Y= +github.com/onsi/gomega v1.37.0/go.mod h1:8D9+Txp43QWKhM24yyOBEdpkzN8FvJyAwecBgsU4KU0= +github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= +github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= +github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA= +github.com/stretchr/testify v1.11.1 h1:7s2iGBzp5EwR7/aIZr8ao5+dra3wiQyKjjFuvgVKu7U= +github.com/stretchr/testify v1.11.1/go.mod h1:wZwfW3scLgRK+23gO65QZefKpKQRnfz6sD981Nm4B6U= +github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= +go.mongodb.org/mongo-driver v1.17.4 h1:jUorfmVzljjr0FLzYQsGP8cgN/qzzxlY9Vh0C9KFXVw= +go.mongodb.org/mongo-driver v1.17.4/go.mod h1:Hy04i7O2kC4RS06ZrhPRqj/u4DTYkFDAAccj+rVKqgQ= +golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= +golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= +golang.org/x/crypto v0.42.0 h1:chiH31gIWm57EkTXpwnqf8qeuMUi0yekh6mT2AvFlqI= +golang.org/x/crypto v0.42.0/go.mod h1:4+rDnOTJhQCx2q7/j6rAN5XDw8kPjeaXEUR2eL94ix8= +golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20200520004742-59133d7f0dd7/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= +golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= +golang.org/x/net v0.44.0 h1:evd8IRDyfNBMBTTY5XRF1vaZlD+EmWx6x8PkhR04H/I= +golang.org/x/net v0.44.0/go.mod h1:ECOoLqd5U3Lhyeyo/QDCEVQ4sNgYsqvCZ722XogGieY= +golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190904154756-749cb33beabd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191005200804-aed5e4c7ecf9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191120155948-bd437916bb0e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210112080510-489259a85091/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20220908164124-27713097b956/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.36.0 h1:KVRy2GtZBrk1cBYA7MKu5bEZFxQk4NIDV6RLVcC8o0k= +golang.org/x/sys v0.36.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= +golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/text v0.29.0 h1:1neNs90w9YzJ9BocxfsQNHKuAT4pkghyXc4nhZ6sJvk= +golang.org/x/text v0.29.0/go.mod h1:7MhJOA9CD2qZyOKYazxdYMF85OwPdEr9jTtBpO7ydH4= +golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20201224043029-2b0845dc783e/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/tools v0.36.0 h1:kWS0uv/zsvHEle1LbV5LE8QujrxB3wfQyxHfhOk0Qkg= +golang.org/x/tools v0.36.0/go.mod h1:WBDiHKJK8YgLHlcQPYQzNCkUxUypCaa5ZegCVutKm+s= +golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= +google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= +google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM= +google.golang.org/protobuf v1.20.1-0.20200309200217-e05f789c0967/go.mod h1:A+miEFZTKqfCUM6K7xSMQL9OKL/b6hQv+e19PK+JZNE= +google.golang.org/protobuf v1.21.0/go.mod h1:47Nbq4nVaFHyn7ilMalzfO3qCViNmqZ2kzikPIcrTAo= +google.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= +google.golang.org/protobuf v1.36.5 h1:tPhr+woSbjfYvY6/GPufUoYizxw1cF/yFoxJ2fmpwlM= +google.golang.org/protobuf v1.36.5/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE= +gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f h1:BLraFXnmrev5lT+xlilqcH8XK9/i0At2xKjWk4p6zsU= +gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys= +gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7 h1:uRGJdciOHaEIrze2W8Q3AKkepLTh2hOroT7a+7czfdQ= +gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw= +gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.2.4/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.3.0/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= +gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +sigs.k8s.io/yaml v1.4.0 h1:Mk1wCc2gy/F0THH0TAp1QYyJNzRm2KCLy3o5ASXVI5E= +sigs.k8s.io/yaml v1.4.0/go.mod h1:Ejl7/uTz7PSA4eKMyQCUTnhZYNmLIl+5c2lQPGR2BPY= diff --git a/ibm/service/drautomationservice/dra-go-sdk/package.json b/ibm/service/drautomationservice/dra-go-sdk/package.json new file mode 100644 index 0000000000..b8a7699376 --- /dev/null +++ b/ibm/service/drautomationservice/dra-go-sdk/package.json @@ -0,0 +1,18 @@ +{ + "name": "semantic-release-dependencies", + "version": "0.0.0", + "description": "This package.json is being used to manage semantic-release and its dependencies", + "license": "Apache-2.0", + "devDependencies": { + "semantic-release": "21.0.7", + "@semantic-release/changelog": "6.0.3", + "@semantic-release/exec": "6.0.3", + "@semantic-release/git": "10.0.1" + }, + "overrides": { + "semver": "^7.5.3" + }, + "scripts": { + "semantic-release": "semantic-release" + } +} From 11eb611a6bd8f1fb0450a55bd14ed021799a570e Mon Sep 17 00:00:00 2001 From: Mani-Raj-Langaru1 Date: Tue, 25 Nov 2025 05:31:33 -0500 Subject: [PATCH 09/13] fixed session erro --- go.mod | 36 ++++++++------- go.sum | 98 ++++++++++++++++++++-------------------- ibm/conns/config.go | 21 +++++++++ ibm/provider/provider.go | 1 + 4 files changed, 91 insertions(+), 65 deletions(-) diff --git a/go.mod b/go.mod index 195e8eb9a1..d51dd37555 100644 --- a/go.mod +++ b/go.mod @@ -52,7 +52,7 @@ require ( github.com/google/uuid v1.6.0 github.com/hashicorp/go-uuid v1.0.3 github.com/hashicorp/go-version v1.7.0 - github.com/hashicorp/terraform-plugin-sdk/v2 v2.37.0 + github.com/hashicorp/terraform-plugin-sdk/v2 v2.38.1 github.com/hashicorp/terraform-plugin-testing v1.13.3 github.com/jinzhu/copier v0.3.2 github.com/minsikl/netscaler-nitro-go v0.0.0-20170827154432-5b14ce3643e3 @@ -76,6 +76,7 @@ require ( require ( github.com/Logicalis/asn1 v0.0.0-20190312173541-d60463189a56 // indirect + github.com/Masterminds/semver/v3 v3.4.0 // indirect github.com/PromonLogicalis/asn1 v0.0.0-20190312173541-d60463189a56 // indirect github.com/ProtonMail/go-crypto v1.1.6 // indirect github.com/agext/levenshtein v1.2.2 // indirect @@ -97,7 +98,7 @@ require ( github.com/fxamacker/cbor/v2 v2.7.0 // indirect github.com/gabriel-vasile/mimetype v1.4.9 // indirect github.com/ghodss/yaml v1.0.1-0.20190212211648-25d852aebe32 // indirect - github.com/go-jose/go-jose/v4 v4.0.5 // indirect + github.com/go-jose/go-jose/v4 v4.1.1 // indirect github.com/go-logr/logr v1.4.3 // indirect github.com/go-logr/stdr v1.2.2 // indirect github.com/go-openapi/analysis v0.23.0 // indirect @@ -120,6 +121,7 @@ require ( github.com/golang/snappy v0.0.4 // indirect github.com/google/gnostic-models v0.6.9 // indirect github.com/google/go-querystring v1.1.0 // indirect + github.com/google/pprof v0.0.0-20250403155104-27863c87afa6 // indirect github.com/gorilla/websocket v1.5.4-0.20250319132907-e064f32e3674 // indirect github.com/hashicorp/errwrap v1.1.0 // indirect github.com/hashicorp/go-checkpoint v0.5.0 // indirect @@ -127,7 +129,7 @@ require ( github.com/hashicorp/go-cty v1.5.0 // indirect github.com/hashicorp/go-hclog v1.6.3 // indirect github.com/hashicorp/go-multierror v1.1.1 // indirect - github.com/hashicorp/go-plugin v1.6.3 // indirect + github.com/hashicorp/go-plugin v1.7.0 // indirect github.com/hashicorp/go-retryablehttp v0.7.8 // indirect github.com/hashicorp/go-rootcerts v1.0.2 // indirect github.com/hashicorp/go-secure-stdlib/parseutil v0.1.8 // indirect @@ -135,18 +137,18 @@ require ( github.com/hashicorp/go-sockaddr v1.0.7 // indirect github.com/hashicorp/hc-install v0.9.2 // indirect github.com/hashicorp/hcl v1.0.1-vault-7 // indirect - github.com/hashicorp/hcl/v2 v2.23.0 // indirect + github.com/hashicorp/hcl/v2 v2.24.0 // indirect github.com/hashicorp/logutils v1.0.0 // indirect - github.com/hashicorp/terraform-exec v0.23.0 // indirect - github.com/hashicorp/terraform-json v0.25.0 // indirect - github.com/hashicorp/terraform-plugin-go v0.28.0 // indirect + github.com/hashicorp/terraform-exec v0.23.1 // indirect + github.com/hashicorp/terraform-json v0.27.1 // indirect + github.com/hashicorp/terraform-plugin-go v0.29.0 // indirect github.com/hashicorp/terraform-plugin-log v0.9.0 // indirect - github.com/hashicorp/terraform-registry-address v0.2.5 // indirect + github.com/hashicorp/terraform-registry-address v0.4.0 // indirect github.com/hashicorp/terraform-svchost v0.1.1 // indirect github.com/hashicorp/vault/api v1.16.0 // indirect github.com/hashicorp/vault/api/auth/approle v0.8.0 // indirect github.com/hashicorp/vault/api/auth/kubernetes v0.8.0 // indirect - github.com/hashicorp/yamux v0.1.1 // indirect + github.com/hashicorp/yamux v0.1.2 // indirect github.com/hokaccha/go-prettyjson v0.0.0-20170213120834-e6b9231a2b1c // indirect github.com/jcmturner/aescts/v2 v2.0.0 // indirect github.com/jcmturner/dnsutils/v2 v2.0.0 // indirect @@ -192,19 +194,19 @@ require ( github.com/vmihailenco/msgpack/v5 v5.4.1 // indirect github.com/vmihailenco/tagparser/v2 v2.0.0 // indirect github.com/x448/float16 v0.8.4 // indirect - github.com/zclconf/go-cty v1.16.3 // indirect + github.com/zclconf/go-cty v1.17.0 // indirect go.mongodb.org/mongo-driver v1.17.4 // indirect go.opentelemetry.io/auto/sdk v1.1.0 // indirect - go.opentelemetry.io/otel v1.35.0 // indirect - go.opentelemetry.io/otel/metric v1.35.0 // indirect - go.opentelemetry.io/otel/trace v1.35.0 // indirect + go.opentelemetry.io/otel v1.37.0 // indirect + go.opentelemetry.io/otel/metric v1.37.0 // indirect + go.opentelemetry.io/otel/trace v1.37.0 // indirect go.uber.org/automaxprocs v1.6.0 // indirect go.uber.org/ratelimit v0.2.0 // indirect go.uber.org/zap v1.27.0 // indirect go.yaml.in/yaml/v2 v2.4.2 // indirect golang.org/x/mod v0.27.0 // indirect golang.org/x/net v0.44.0 // indirect - golang.org/x/oauth2 v0.27.0 // indirect + golang.org/x/oauth2 v0.30.0 // indirect golang.org/x/sync v0.17.0 // indirect golang.org/x/sys v0.36.0 // indirect golang.org/x/term v0.35.0 // indirect @@ -212,9 +214,9 @@ require ( golang.org/x/time v0.9.0 // indirect golang.org/x/tools v0.36.0 // indirect google.golang.org/appengine v1.6.8 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20250218202821-56aae31c358a // indirect - google.golang.org/grpc v1.72.1 // indirect - google.golang.org/protobuf v1.36.7 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20250707201910-8d1bb00bc6a7 // indirect + google.golang.org/grpc v1.75.1 // indirect + google.golang.org/protobuf v1.36.9 // indirect gopkg.in/evanphx/json-patch.v4 v4.12.0 // indirect gopkg.in/inf.v0 v0.9.1 // indirect gopkg.in/ini.v1 v1.67.0 // indirect diff --git a/go.sum b/go.sum index 9ffb8862fd..99be7ab5b3 100644 --- a/go.sum +++ b/go.sum @@ -172,8 +172,8 @@ github.com/IBM/vpc-go-sdk v0.75.0 h1:8s11vR30n0eY9ptf6Osh9Bw13okhMVasb/KX9M52LEg github.com/IBM/vpc-go-sdk v0.75.0/go.mod h1:8lX6TpeYBbx1Vd4KTgM3PPQ4y3auGOPuD6qq3UBDdug= github.com/Logicalis/asn1 v0.0.0-20190312173541-d60463189a56 h1:vuquMR410psHNax14XKNWa0Ae/kYgWJcXi0IFuX60N0= github.com/Logicalis/asn1 v0.0.0-20190312173541-d60463189a56/go.mod h1:Zb3OT4l0mf7P/GOs2w2Ilj5sdm5Whoq3pa24dAEBHFc= -github.com/Masterminds/semver/v3 v3.2.1 h1:RN9w6+7QoMeJVGyfmbcgs28Br8cvmnucEXnY0rYXWg0= -github.com/Masterminds/semver/v3 v3.2.1/go.mod h1:qvl/7zhW3nngYb5+80sSMF+FG2BjYrf8m9wsX0PNOMQ= +github.com/Masterminds/semver/v3 v3.4.0 h1:Zog+i5UMtVoCU8oKka5P7i9q9HgrJeGzI9SA1Xbatp0= +github.com/Masterminds/semver/v3 v3.4.0/go.mod h1:4V+yj/TJE1HU9XfppCwVMZq3I84lprf4nC11bSS5beM= github.com/Microsoft/go-winio v0.6.2 h1:F2VQgta7ecxGYO8k3ZZz3RS8fVIXVxONVUPlNERoyfY= github.com/Microsoft/go-winio v0.6.2/go.mod h1:yd8OoFMLzJbo9gZq8j5qaps8bJ9aShtEA8Ipt1oGCvU= github.com/NYTimes/gziphandler v0.0.0-20170623195520-56545f4a5d46/go.mod h1:3wb06e3pkSAbeQ52E9H9iFoQsEEwGN64994WTCIhntQ= @@ -242,8 +242,8 @@ github.com/bgentry/speakeasy v0.1.0/go.mod h1:+zsyZBPWlz7T6j88CTgSN5bM796AkVf0kB github.com/bketelsen/crypt v0.0.3-0.20200106085610-5cbc8cc4026c/go.mod h1:MKsuJmJgSg28kpZDP6UIiPt0e0Oz0kqKNGyRaWEPv84= github.com/blang/semver v3.5.0+incompatible/go.mod h1:kRBLl5iJ+tD4TcOOxsy/0fnwebNt5EWlYSAyrTnjyyk= github.com/blang/semver v3.5.1+incompatible/go.mod h1:kRBLl5iJ+tD4TcOOxsy/0fnwebNt5EWlYSAyrTnjyyk= -github.com/bufbuild/protocompile v0.4.0 h1:LbFKd2XowZvQ/kajzguUp2DC9UEIQhIq77fZZlaQsNA= -github.com/bufbuild/protocompile v0.4.0/go.mod h1:3v93+mbWn/v3xzN+31nwkJfrEpAUwp+BagBSZWx+TP8= +github.com/bufbuild/protocompile v0.14.1 h1:iA73zAf/fyljNjQKwYzUHD6AD4R8KMasmwa/FBatYVw= +github.com/bufbuild/protocompile v0.14.1/go.mod h1:ppVdAIhbr2H8asPk6k4pY7t9zB1OU5DoEw9xY/FUi1c= github.com/cenkalti/backoff v2.1.1+incompatible/go.mod h1:90ReRw6GdpyfrHakVjL/QHaoyV4aDUVVkXQJJJ3NXXM= github.com/cenkalti/backoff v2.2.1+incompatible/go.mod h1:90ReRw6GdpyfrHakVjL/QHaoyV4aDUVVkXQJJJ3NXXM= github.com/cenkalti/backoff/v3 v3.0.0/go.mod h1:cIeZDE3IrqwwJl6VUwCN6trj1oXrTS4rc0ij+ULvLYs= @@ -381,8 +381,8 @@ github.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2 github.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= github.com/go-jose/go-jose/v3 v3.0.0/go.mod h1:RNkWWRld676jZEYoV3+XK8L2ZnNSvIsxFMht0mSX+u8= github.com/go-jose/go-jose/v4 v4.0.1/go.mod h1:WVf9LFMHh/QVrmqrOfqun0C45tMe3RoiKJMPvgWwLfY= -github.com/go-jose/go-jose/v4 v4.0.5 h1:M6T8+mKZl/+fNNuFHvGIzDz7BTLQPIounk/b9dw3AaE= -github.com/go-jose/go-jose/v4 v4.0.5/go.mod h1:s3P1lRrkT8igV8D9OjyL4WRyHvjB6a4JSllnOrmmBOA= +github.com/go-jose/go-jose/v4 v4.1.1 h1:JYhSgy4mXXzAdF3nUx3ygx347LRXJRrpgyU3adRmkAI= +github.com/go-jose/go-jose/v4 v4.1.1/go.mod h1:BdsZGqgdO3b6tTc6LSE56wcDbMMLuPsw5d4ZD5f94kA= github.com/go-kit/kit v0.8.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= github.com/go-kit/kit v0.9.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= github.com/go-logfmt/logfmt v0.3.0/go.mod h1:Qt1PoO58o5twSAckw1HlFXLmHsOX5/0LbT9GBnD5lWE= @@ -628,8 +628,8 @@ github.com/google/pprof v0.0.0-20210407192527-94a9f03dee38/go.mod h1:kpwsk12EmLe github.com/google/pprof v0.0.0-20210601050228-01bbb1931b22/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= github.com/google/pprof v0.0.0-20210609004039-a478d1d731e9/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= github.com/google/pprof v0.0.0-20210720184732-4bb14d4b1be1/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= -github.com/google/pprof v0.0.0-20241029153458-d1b30febd7db h1:097atOisP2aRj7vFgYQBbFN4U4JNXUNYpxael3UzMyo= -github.com/google/pprof v0.0.0-20241029153458-d1b30febd7db/go.mod h1:vavhavw2zAxS5dIdcRluK6cSGGPlZynqzFM8NdvU144= +github.com/google/pprof v0.0.0-20250403155104-27863c87afa6 h1:BHT72Gu3keYf3ZEu2J0b1vyeLSOYI8bm5wbJM/8yDe8= +github.com/google/pprof v0.0.0-20250403155104-27863c87afa6/go.mod h1:boTsfXsheKC2y+lKOCMpSfarhxDeIzfZG1jqGcPl3cA= github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI= github.com/google/uuid v1.0.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/google/uuid v1.1.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= @@ -695,8 +695,8 @@ github.com/hashicorp/go-multierror v1.0.0/go.mod h1:dHtQlpGsu+cZNNAkkCN/P3hoUDHh github.com/hashicorp/go-multierror v1.1.0/go.mod h1:spPvp8C1qA32ftKqdAHm4hHTbPw+vmowP0z+KUhOZdA= github.com/hashicorp/go-multierror v1.1.1 h1:H5DkEtf6CXdFp0N0Em5UCwQpXMWke8IA0+lD48awMYo= github.com/hashicorp/go-multierror v1.1.1/go.mod h1:iw975J/qwKPdAO1clOe2L8331t/9/fmwbPZ6JB6eMoM= -github.com/hashicorp/go-plugin v1.6.3 h1:xgHB+ZUSYeuJi96WtxEjzi23uh7YQpznjGh0U0UUrwg= -github.com/hashicorp/go-plugin v1.6.3/go.mod h1:MRobyh+Wc/nYy1V4KAXUiYfzxoYhs7V1mlH1Z7iY2h0= +github.com/hashicorp/go-plugin v1.7.0 h1:YghfQH/0QmPNc/AZMTFE3ac8fipZyZECHdDPshfk+mA= +github.com/hashicorp/go-plugin v1.7.0/go.mod h1:BExt6KEaIYx804z8k4gRzRLEvxKVb+kn0NMcihqOqb8= github.com/hashicorp/go-retryablehttp v0.5.3/go.mod h1:9B5zBasrRhHXnJnui7y6sL7es7NDiJgTc6Er0maI1Xs= github.com/hashicorp/go-retryablehttp v0.6.2/go.mod h1:gEx6HMUGxYYhJScX7W1Il64m6cc2C1mDaW3NQ9sY1FY= github.com/hashicorp/go-retryablehttp v0.6.6/go.mod h1:vAew36LZh98gCBJNLH42IQ1ER/9wtLZZ8meHqQvEYWY= @@ -736,27 +736,27 @@ github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T github.com/hashicorp/hcl v1.0.1-vault-5/go.mod h1:XYhtn6ijBSAj6n4YqAaf7RBPS4I06AItNorpy+MoQNM= github.com/hashicorp/hcl v1.0.1-vault-7 h1:ag5OxFVy3QYTFTJODRzTKVZ6xvdfLLCA1cy/Y6xGI0I= github.com/hashicorp/hcl v1.0.1-vault-7/go.mod h1:XYhtn6ijBSAj6n4YqAaf7RBPS4I06AItNorpy+MoQNM= -github.com/hashicorp/hcl/v2 v2.23.0 h1:Fphj1/gCylPxHutVSEOf2fBOh1VE4AuLV7+kbJf3qos= -github.com/hashicorp/hcl/v2 v2.23.0/go.mod h1:62ZYHrXgPoX8xBnzl8QzbWq4dyDsDtfCRgIq1rbJEvA= +github.com/hashicorp/hcl/v2 v2.24.0 h1:2QJdZ454DSsYGoaE6QheQZjtKZSUs9Nh2izTWiwQxvE= +github.com/hashicorp/hcl/v2 v2.24.0/go.mod h1:oGoO1FIQYfn/AgyOhlg9qLC6/nOJPX3qGbkZpYAcqfM= github.com/hashicorp/logutils v1.0.0 h1:dLEQVugN8vlakKOUE3ihGLTZJRB4j+M2cdTm/ORI65Y= github.com/hashicorp/logutils v1.0.0/go.mod h1:QIAnNjmIWmVIIkWDTG1z5v++HQmx9WQRO+LraFDTW64= github.com/hashicorp/mdns v1.0.4/go.mod h1:mtBihi+LeNXGtG8L9dX59gAEa12BDtBQSp4v/YAJqrc= github.com/hashicorp/memberlist v0.5.0/go.mod h1:yvyXLpo0QaGE59Y7hDTsTzDD25JYBZ4mHgHUZ8lrOI0= github.com/hashicorp/serf v0.10.1/go.mod h1:yL2t6BqATOLGc5HF7qbFkTfXoPIY0WZdWHfEvMqbG+4= -github.com/hashicorp/terraform-exec v0.23.0 h1:MUiBM1s0CNlRFsCLJuM5wXZrzA3MnPYEsiXmzATMW/I= -github.com/hashicorp/terraform-exec v0.23.0/go.mod h1:mA+qnx1R8eePycfwKkCRk3Wy65mwInvlpAeOwmA7vlY= -github.com/hashicorp/terraform-json v0.25.0 h1:rmNqc/CIfcWawGiwXmRuiXJKEiJu1ntGoxseG1hLhoQ= -github.com/hashicorp/terraform-json v0.25.0/go.mod h1:sMKS8fiRDX4rVlR6EJUMudg1WcanxCMoWwTLkgZP/vc= -github.com/hashicorp/terraform-plugin-go v0.28.0 h1:zJmu2UDwhVN0J+J20RE5huiF3XXlTYVIleaevHZgKPA= -github.com/hashicorp/terraform-plugin-go v0.28.0/go.mod h1:FDa2Bb3uumkTGSkTFpWSOwWJDwA7bf3vdP3ltLDTH6o= +github.com/hashicorp/terraform-exec v0.23.1 h1:diK5NSSDXDKqHEOIQefBMu9ny+FhzwlwV0xgUTB7VTo= +github.com/hashicorp/terraform-exec v0.23.1/go.mod h1:e4ZEg9BJDRaSalGm2z8vvrPONt0XWG0/tXpmzYTf+dM= +github.com/hashicorp/terraform-json v0.27.1 h1:zWhEracxJW6lcjt/JvximOYyc12pS/gaKSy/wzzE7nY= +github.com/hashicorp/terraform-json v0.27.1/go.mod h1:GzPLJ1PLdUG5xL6xn1OXWIjteQRT2CNT9o/6A9mi9hE= +github.com/hashicorp/terraform-plugin-go v0.29.0 h1:1nXKl/nSpaYIUBU1IG/EsDOX0vv+9JxAltQyDMpq5mU= +github.com/hashicorp/terraform-plugin-go v0.29.0/go.mod h1:vYZbIyvxyy0FWSmDHChCqKvI40cFTDGSb3D8D70i9GM= github.com/hashicorp/terraform-plugin-log v0.9.0 h1:i7hOA+vdAItN1/7UrfBqBwvYPQ9TFvymaRGZED3FCV0= github.com/hashicorp/terraform-plugin-log v0.9.0/go.mod h1:rKL8egZQ/eXSyDqzLUuwUYLVdlYeamldAHSxjUFADow= -github.com/hashicorp/terraform-plugin-sdk/v2 v2.37.0 h1:NFPMacTrY/IdcIcnUB+7hsore1ZaRWU9cnB6jFoBnIM= -github.com/hashicorp/terraform-plugin-sdk/v2 v2.37.0/go.mod h1:QYmYnLfsosrxjCnGY1p9c7Zj6n9thnEE+7RObeYs3fA= +github.com/hashicorp/terraform-plugin-sdk/v2 v2.38.1 h1:mlAq/OrMlg04IuJT7NpefI1wwtdpWudnEmjuQs04t/4= +github.com/hashicorp/terraform-plugin-sdk/v2 v2.38.1/go.mod h1:GQhpKVvvuwzD79e8/NZ+xzj+ZpWovdPAe8nfV/skwNU= github.com/hashicorp/terraform-plugin-testing v1.13.3 h1:QLi/khB8Z0a5L54AfPrHukFpnwsGL8cwwswj4RZduCo= github.com/hashicorp/terraform-plugin-testing v1.13.3/go.mod h1:WHQ9FDdiLoneey2/QHpGM/6SAYf4A7AZazVg7230pLE= -github.com/hashicorp/terraform-registry-address v0.2.5 h1:2GTftHqmUhVOeuu9CW3kwDkRe4pcBDq0uuK5VJngU1M= -github.com/hashicorp/terraform-registry-address v0.2.5/go.mod h1:PpzXWINwB5kuVS5CA7m1+eO2f1jKb5ZDIxrOPfpnGkg= +github.com/hashicorp/terraform-registry-address v0.4.0 h1:S1yCGomj30Sao4l5BMPjTGZmCNzuv7/GDTDX99E9gTk= +github.com/hashicorp/terraform-registry-address v0.4.0/go.mod h1:LRS1Ay0+mAiRkUyltGT+UHWkIqTFvigGn/LbMshfflE= github.com/hashicorp/terraform-svchost v0.1.1 h1:EZZimZ1GxdqFRinZ1tpJwVxxt49xc/S52uzrw4x0jKQ= github.com/hashicorp/terraform-svchost v0.1.1/go.mod h1:mNsjQfZyf/Jhz35v6/0LWcv26+X7JPS+buii2c9/ctc= github.com/hashicorp/vault/api v1.10.0/go.mod h1:jo5Y/ET+hNyz+JnKDt8XLAdKs+AM0G5W0Vp1IrFI8N8= @@ -768,8 +768,8 @@ github.com/hashicorp/vault/api/auth/approle v0.8.0/go.mod h1:NV7O9r5JUtNdVnqVZeM github.com/hashicorp/vault/api/auth/kubernetes v0.5.0/go.mod h1:afrElBIO9Q4sHFVuVWgNevG4uAs1bT2AZFA9aEiI608= github.com/hashicorp/vault/api/auth/kubernetes v0.8.0 h1:6jPcORq7OHwf+MCbaaUmiBvMhETAaZ7+i97WfZtF5kc= github.com/hashicorp/vault/api/auth/kubernetes v0.8.0/go.mod h1:nfl5sRUUork0ZSfV3xf+pgAFQSD5kSkL0k9axg523DM= -github.com/hashicorp/yamux v0.1.1 h1:yrQxtgseBDrq9Y652vSRDvsKCJKOUD+GzTS4Y0Y8pvE= -github.com/hashicorp/yamux v0.1.1/go.mod h1:CtWFDAQgb7dxtzFs4tWbplKIe2jSi3+5vKbgIO0SLnQ= +github.com/hashicorp/yamux v0.1.2 h1:XtB8kyFOyHXYVFnwT5C3+Bdo8gArse7j2AQ0DA0Uey8= +github.com/hashicorp/yamux v0.1.2/go.mod h1:C+zze2n6e/7wshOZep2A70/aQU6QBRWJO/G6FT1wIns= github.com/hokaccha/go-prettyjson v0.0.0-20170213120834-e6b9231a2b1c h1:vlXZsaTgJ55QZrAkOrpq0tsJmuuM4ky5OMZOvXnhvqE= github.com/hokaccha/go-prettyjson v0.0.0-20170213120834-e6b9231a2b1c/go.mod h1:pFlLw2CfqZiIBOx6BuCeRLCrfxBJipTY0nIOF/VbGcI= github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU= @@ -796,8 +796,8 @@ github.com/jcmturner/gokrb5/v8 v8.4.4 h1:x1Sv4HaTpepFkXbt2IkL29DXRf8sOfZXo8eRKh6 github.com/jcmturner/gokrb5/v8 v8.4.4/go.mod h1:1btQEpgT6k+unzCwX1KdWMEwPPkkgBtP+F6aCACiMrs= github.com/jcmturner/rpc/v2 v2.0.3 h1:7FXXj8Ti1IaVFpSAziCZWNzbNuZmnvw/i6CqLNdWfZY= github.com/jcmturner/rpc/v2 v2.0.3/go.mod h1:VUJYCIDm3PVOEHw8sgt091/20OJjskO/YJki3ELg/Hc= -github.com/jhump/protoreflect v1.15.1 h1:HUMERORf3I3ZdX05WaQ6MIpd/NJ434hTp5YiKgfCL6c= -github.com/jhump/protoreflect v1.15.1/go.mod h1:jD/2GMKKE6OqX8qTjhADU1e6DShO+gavG9e0Q693nKo= +github.com/jhump/protoreflect v1.17.0 h1:qOEr613fac2lOuTgWN4tPAtLL7fUSbuJL5X5XumQh94= +github.com/jhump/protoreflect v1.17.0/go.mod h1:h9+vUUL38jiBzck8ck+6G/aeMX8Z4QUY/NiJPwPNi+8= github.com/jinzhu/copier v0.3.2 h1:QdBOCbaouLDYaIPFfi1bKv5F5tPpeTwXe4sD0jqtz5w= github.com/jinzhu/copier v0.3.2/go.mod h1:24xnZezI2Yqac9J61UC6/dG/k76ttpq0DdJI3QmUvro= github.com/jmespath/go-jmespath v0.0.0-20180206201540-c2b33e8439af/go.mod h1:Nht3zPeWKUH0NzdCt2Blrr5ys8VGpn0CEB0cQHVjt7k= @@ -1097,8 +1097,8 @@ github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFR github.com/rogpeppe/go-internal v1.6.1/go.mod h1:xXDCJY+GAPziupqXw64V24skbSoqbTEfhy4qGm1nDQc= github.com/rogpeppe/go-internal v1.8.1/go.mod h1:JeRgkft04UBgHMgCIwADu4Pn6Mtm5d4nPKWu0nJ5d+o= github.com/rogpeppe/go-internal v1.10.0/go.mod h1:UQnix2H7Ngw/k4C5ijL5+65zddjncjaFoBhdsK/akog= -github.com/rogpeppe/go-internal v1.13.1 h1:KvO1DLK/DRN07sQ1LQKScxyZJuNnedQ5/wKSR38lUII= -github.com/rogpeppe/go-internal v1.13.1/go.mod h1:uMEvuHeurkdAXX61udpOXGD/AzZDWNMNyH2VO9fmH0o= +github.com/rogpeppe/go-internal v1.14.1 h1:UQB4HGPB6osV0SQTLymcB4TgvyWu6ZyliaW0tI/otEQ= +github.com/rogpeppe/go-internal v1.14.1/go.mod h1:MaRKkUm5W0goXpeCfT7UZI6fk/L7L7so1lCWt35ZSgc= github.com/rook/rook/pkg/apis v0.0.0-20250619203122-80563e28b685 h1:cTmcoJuxyEeXhB5Ba+8DXPXjuFEDor7lmJ5ioHoxJ1A= github.com/rook/rook/pkg/apis v0.0.0-20250619203122-80563e28b685/go.mod h1:9CJEyiiaJjPZc2lqcL7DO+L74okI4cxOjoQy1Cu4B7g= github.com/russross/blackfriday v1.5.2/go.mod h1:JO/DiYxRf+HjHt06OyowR9PTA263kcR/rfWxYHBV53g= @@ -1221,8 +1221,8 @@ github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9dec github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= github.com/yuin/goldmark v1.4.1/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= -github.com/zclconf/go-cty v1.16.3 h1:osr++gw2T61A8KVYHoQiFbFd1Lh3JOCXc/jFLJXKTxk= -github.com/zclconf/go-cty v1.16.3/go.mod h1:VvMs5i0vgZdhYawQNq5kePSpLAoz8u1xvZgrPIxfnZE= +github.com/zclconf/go-cty v1.17.0 h1:seZvECve6XX4tmnvRzWtJNHdscMtYEx5R7bnnVyd/d0= +github.com/zclconf/go-cty v1.17.0/go.mod h1:wqFzcImaLTI6A5HfsRwB0nj5n0MRZFwmey8YoFPPs3U= github.com/zclconf/go-cty-debug v0.0.0-20240509010212-0d6042c53940 h1:4r45xpDWB6ZMSMNJFMOjqrGHynW3DIBuR2H9j0ug+Mo= github.com/zclconf/go-cty-debug v0.0.0-20240509010212-0d6042c53940/go.mod h1:CmBdvvj3nqzfzJ6nTCIwDTPZ56aVGvDrmztiO5g3qrM= go.etcd.io/bbolt v1.3.2/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU= @@ -1250,16 +1250,16 @@ go.opencensus.io v0.22.5/go.mod h1:5pWMHQbX5EPX2/62yrJeAkowc+lfs/XD7Uxpq3pI6kk= go.opencensus.io v0.23.0/go.mod h1:XItmlyltB5F7CS4xOC1DcqMoFqwtC6OG2xF7mCv7P7E= go.opentelemetry.io/auto/sdk v1.1.0 h1:cH53jehLUN6UFLY71z+NDOiNJqDdPRaXzTel0sJySYA= go.opentelemetry.io/auto/sdk v1.1.0/go.mod h1:3wSPjt5PWp2RhlCcmmOial7AvC4DQqZb7a7wCow3W8A= -go.opentelemetry.io/otel v1.35.0 h1:xKWKPxrxB6OtMCbmMY021CqC45J+3Onta9MqjhnusiQ= -go.opentelemetry.io/otel v1.35.0/go.mod h1:UEqy8Zp11hpkUrL73gSlELM0DupHoiq72dR+Zqel/+Y= -go.opentelemetry.io/otel/metric v1.35.0 h1:0znxYu2SNyuMSQT4Y9WDWej0VpcsxkuklLa4/siN90M= -go.opentelemetry.io/otel/metric v1.35.0/go.mod h1:nKVFgxBZ2fReX6IlyW28MgZojkoAkJGaE8CpgeAU3oE= -go.opentelemetry.io/otel/sdk v1.34.0 h1:95zS4k/2GOy069d321O8jWgYsW3MzVV+KuSPKp7Wr1A= -go.opentelemetry.io/otel/sdk v1.34.0/go.mod h1:0e/pNiaMAqaykJGKbi+tSjWfNNHMTxoC9qANsCzbyxU= -go.opentelemetry.io/otel/sdk/metric v1.34.0 h1:5CeK9ujjbFVL5c1PhLuStg1wxA7vQv7ce1EK0Gyvahk= -go.opentelemetry.io/otel/sdk/metric v1.34.0/go.mod h1:jQ/r8Ze28zRKoNRdkjCZxfs6YvBTG1+YIqyFVFYec5w= -go.opentelemetry.io/otel/trace v1.35.0 h1:dPpEfJu1sDIqruz7BHFG3c7528f6ddfSWfFDVt/xgMs= -go.opentelemetry.io/otel/trace v1.35.0/go.mod h1:WUk7DtFp1Aw2MkvqGdwiXYDZZNvA/1J8o6xRXLrIkyc= +go.opentelemetry.io/otel v1.37.0 h1:9zhNfelUvx0KBfu/gb+ZgeAfAgtWrfHJZcAqFC228wQ= +go.opentelemetry.io/otel v1.37.0/go.mod h1:ehE/umFRLnuLa/vSccNq9oS1ErUlkkK71gMcN34UG8I= +go.opentelemetry.io/otel/metric v1.37.0 h1:mvwbQS5m0tbmqML4NqK+e3aDiO02vsf/WgbsdpcPoZE= +go.opentelemetry.io/otel/metric v1.37.0/go.mod h1:04wGrZurHYKOc+RKeye86GwKiTb9FKm1WHtO+4EVr2E= +go.opentelemetry.io/otel/sdk v1.37.0 h1:ItB0QUqnjesGRvNcmAcU0LyvkVyGJ2xftD29bWdDvKI= +go.opentelemetry.io/otel/sdk v1.37.0/go.mod h1:VredYzxUvuo2q3WRcDnKDjbdvmO0sCzOvVAiY+yUkAg= +go.opentelemetry.io/otel/sdk/metric v1.37.0 h1:90lI228XrB9jCMuSdA0673aubgRobVZFhbjxHHspCPc= +go.opentelemetry.io/otel/sdk/metric v1.37.0/go.mod h1:cNen4ZWfiD37l5NhS+Keb5RXVWZWpRE+9WyVCpbo5ps= +go.opentelemetry.io/otel/trace v1.37.0 h1:HLdcFNbRQBE2imdSEgm/kwqmQj1Or1l/7bW6mxVK7z4= +go.opentelemetry.io/otel/trace v1.37.0/go.mod h1:TlgrlQ+PtQO5XFerSPUYG0JSgGyryXewPGyayAWSBS0= go.opentelemetry.io/proto/otlp v0.7.0/go.mod h1:PqfVotwruBrMGOCsRd/89rSnXhoiJIqeYNgFYFoEGnI= go.uber.org/atomic v1.3.2/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= go.uber.org/atomic v1.4.0/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= @@ -1464,8 +1464,8 @@ golang.org/x/oauth2 v0.0.0-20220223155221-ee480838109b/go.mod h1:DAh4E804XQdzx2j golang.org/x/oauth2 v0.0.0-20220309155454-6242fa91716a/go.mod h1:DAh4E804XQdzx2j+YRIaUnCqCV2RuMz24cGBJ5QYIrc= golang.org/x/oauth2 v0.0.0-20220411215720-9780585627b5/go.mod h1:DAh4E804XQdzx2j+YRIaUnCqCV2RuMz24cGBJ5QYIrc= golang.org/x/oauth2 v0.0.0-20220524215830-622c5d57e401/go.mod h1:DAh4E804XQdzx2j+YRIaUnCqCV2RuMz24cGBJ5QYIrc= -golang.org/x/oauth2 v0.27.0 h1:da9Vo7/tDv5RH/7nZDz1eMGS/q1Vv1N/7FCrBhI9I3M= -golang.org/x/oauth2 v0.27.0/go.mod h1:onh5ek6nERTohokkhCD/y2cV4Do3fxFHFuAejCkRWT8= +golang.org/x/oauth2 v0.30.0 h1:dnDm7JmhM45NNpd8FDDeLhK6FwqbOf4MLCM9zb1BOHI= +golang.org/x/oauth2 v0.30.0/go.mod h1:B++QgG3ZKulg6sRPGD/mqlHQs5rB3Ml9erfeDY7xKlU= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -1746,6 +1746,8 @@ golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8T golang.org/x/xerrors v0.0.0-20220411194840-2f41105eb62f/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20220517211312-f3a8303e98df/go.mod h1:K8+ghG5WaK9qNqU5K3HdILfMLy1f3aNYFI/wnl100a8= gomodules.xyz/jsonpatch/v2 v2.0.1/go.mod h1:IhYNNY4jnS53ZnfE4PAmpKtDpTCj1JFXc+3mwe7XcUU= +gonum.org/v1/gonum v0.16.0 h1:5+ul4Swaf3ESvrOnidPp4GZbzf0mxVQpDCYUQE7OJfk= +gonum.org/v1/gonum v0.16.0/go.mod h1:fef3am4MQ93R2HHpKnLk4/Tbh/s0+wqD5nfa6Pnwy4E= google.golang.org/api v0.4.0/go.mod h1:8k5glujaEP+g9n7WNsDg8QP6cUVNI86fCNMcbazEtwE= google.golang.org/api v0.7.0/go.mod h1:WtwebWUNSVBH/HAw79HIFXZNqEvBhG+Ra+ax0hx3E3M= google.golang.org/api v0.8.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg= @@ -1869,8 +1871,8 @@ google.golang.org/genproto v0.0.0-20220421151946-72621c1f0bd3/go.mod h1:8w6bsBMX google.golang.org/genproto v0.0.0-20220429170224-98d788798c3e/go.mod h1:8w6bsBMX6yCPbAVTeqQHvzxW0EIFigd5lZyahWgyfDo= google.golang.org/genproto v0.0.0-20220505152158-f39f71e6c8f3/go.mod h1:RAyBrSAP7Fh3Nc84ghnVLDPuV51xc9agzmm4Ph6i0Q4= google.golang.org/genproto v0.0.0-20220602131408-e326c6e8e9c8/go.mod h1:yKyY4AMRwFiC8yMMNaMi+RkCnjZJt9LoWuvhXjMs+To= -google.golang.org/genproto/googleapis/rpc v0.0.0-20250218202821-56aae31c358a h1:51aaUVRocpvUOSQKM6Q7VuoaktNIaMCLuhZB6DKksq4= -google.golang.org/genproto/googleapis/rpc v0.0.0-20250218202821-56aae31c358a/go.mod h1:uRxBH1mhmO8PGhU89cMcHaXKZqO+OfakD8QQO0oYwlQ= +google.golang.org/genproto/googleapis/rpc v0.0.0-20250707201910-8d1bb00bc6a7 h1:pFyd6EwwL2TqFf8emdthzeX+gZE1ElRq3iM8pui4KBY= +google.golang.org/genproto/googleapis/rpc v0.0.0-20250707201910-8d1bb00bc6a7/go.mod h1:qQ0YXyHHx3XkvlzUtpXDkS29lDSafHMZBAZDc03LQ3A= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38= google.golang.org/grpc v1.21.1/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= @@ -1903,8 +1905,8 @@ google.golang.org/grpc v1.45.0/go.mod h1:lN7owxKUQEqMfSyQikvvk5tf/6zMPsrK+ONuO11 google.golang.org/grpc v1.46.0/go.mod h1:vN9eftEi1UMyUsIF80+uQXhHjbXYbm0uXoFCACuMGWk= google.golang.org/grpc v1.46.2/go.mod h1:vN9eftEi1UMyUsIF80+uQXhHjbXYbm0uXoFCACuMGWk= google.golang.org/grpc v1.47.0/go.mod h1:vN9eftEi1UMyUsIF80+uQXhHjbXYbm0uXoFCACuMGWk= -google.golang.org/grpc v1.72.1 h1:HR03wO6eyZ7lknl75XlxABNVLLFc2PAb6mHlYh756mA= -google.golang.org/grpc v1.72.1/go.mod h1:wH5Aktxcg25y1I3w7H69nHfXdOG3UiadoBtjh3izSDM= +google.golang.org/grpc v1.75.1 h1:/ODCNEuf9VghjgO3rqLcfg8fiOP0nSluljWFlDxELLI= +google.golang.org/grpc v1.75.1/go.mod h1:JtPAzKiq4v1xcAB2hydNlWI2RnF85XXcV0mhKXr2ecQ= google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.1.0/go.mod h1:6Kw0yEErY5E/yWrBtf03jp27GLLJujG4z/JK95pnjjw= google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= @@ -1921,8 +1923,8 @@ google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQ google.golang.org/protobuf v1.27.1/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= google.golang.org/protobuf v1.28.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= google.golang.org/protobuf v1.28.1/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= -google.golang.org/protobuf v1.36.7 h1:IgrO7UwFQGJdRNXH/sQux4R1Dj1WAKcLElzeeRaXV2A= -google.golang.org/protobuf v1.36.7/go.mod h1:jduwjTPXsFjZGTmRluh+L6NjiWu7pchiJ2/5YcXBHnY= +google.golang.org/protobuf v1.36.9 h1:w2gp2mA27hUeUzj9Ex9FBjsBm40zfaDtEWow293U7Iw= +google.golang.org/protobuf v1.36.9/go.mod h1:fuxRtAxBytpl4zzqUh6/eyUujkJdNiuEkXntxiD/uRU= gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= diff --git a/ibm/conns/config.go b/ibm/conns/config.go index 823fce0f5e..43bbf5b360 100644 --- a/ibm/conns/config.go +++ b/ibm/conns/config.go @@ -3421,6 +3421,27 @@ func (c *Config) ClientSession() (interface{}, error) { } session.resourceControllerAPI = resourceControllerClient + // Construct an instance of the 'DrAutomation Service' service. + if session.drAutomationServiceClientErr == nil { + // Construct the service options. + drAutomationServiceClientOptions := &drautomationservicev1.DrAutomationServiceV1Options{ + Authenticator: authenticator, + } + + // Construct the service client. + session.drAutomationServiceClient, err = drautomationservicev1.NewDrAutomationServiceV1(drAutomationServiceClientOptions) + if err == nil { + // Enable retries for API calls + session.drAutomationServiceClient.Service.EnableRetries(c.RetryCount, c.RetryDelay) + // Add custom header for analytics + session.drAutomationServiceClient.SetDefaultHeaders(gohttp.Header{ + "X-Original-User-Agent": {fmt.Sprintf("terraform-provider-ibm/%s", version.Version)}, + }) + } else { + session.drAutomationServiceClientErr = fmt.Errorf("error occurred while constructing 'DrAutomation Service' service client: %q", err) + } + } + // SECRETS MANAGER Service V2 // Construct an "options" struct for creating the service client. var smBaseUrl string diff --git a/ibm/provider/provider.go b/ibm/provider/provider.go index 69466c23b3..cbb4ffedc3 100644 --- a/ibm/provider/provider.go +++ b/ibm/provider/provider.go @@ -1139,6 +1139,7 @@ func Provider() *schema.Provider { "ibm_pdr_get_machine_types": drautomationservice.DataSourceIBMPdrGetMachineTypes(), "ibm_pdr_get_managed_vm_list": drautomationservice.DataSourceIBMPdrGetManagedVMList(), "ibm_pdr_last_operation": drautomationservice.DataSourceIBMPdrLastOperation(), + "ibm_pdr_get_grs_location_pairs": drautomationservice.DataSourceIBMPdrGetGrsLocationPairs(), }, ResourcesMap: map[string]*schema.Resource{ From 0bb7331878a45c5172db4aef5c5c31b4f7fbe5c8 Mon Sep 17 00:00:00 2001 From: Mani-Raj-Langaru1 Date: Mon, 1 Dec 2025 07:17:01 -0500 Subject: [PATCH 10/13] resolved terraform-plugin-testing package issue --- go.mod | 1 - go.sum | 2 - ibm/acctest/acctest.go | 10 ++++ ...ta_source_ibm_pdr_get_dr_locations_test.go | 4 +- ...ce_ibm_pdr_get_dr_summary_response_test.go | 4 +- .../data_source_ibm_pdr_get_event_test.go | 6 +- .../data_source_ibm_pdr_get_events_test.go | 8 +-- ...rce_ibm_pdr_get_grs_location_pairs_test.go | 5 +- ...a_source_ibm_pdr_get_machine_types_test.go | 4 +- ...source_ibm_pdr_get_managed_vm_list_test.go | 4 +- ...urce_ibm_pdr_get_powervs_workspace_test.go | 7 +-- ...data_source_ibm_pdr_last_operation_test.go | 22 +++---- .../resource_ibm_pdr_managedr_test.go | 59 ++++++++++++------- .../resource_ibm_pdr_validate_apikey_test.go | 54 ++++++++--------- 14 files changed, 105 insertions(+), 85 deletions(-) diff --git a/go.mod b/go.mod index 64f919a403..fe7a9db63c 100644 --- a/go.mod +++ b/go.mod @@ -53,7 +53,6 @@ require ( github.com/hashicorp/go-uuid v1.0.3 github.com/hashicorp/go-version v1.7.0 github.com/hashicorp/terraform-plugin-sdk/v2 v2.38.1 - github.com/hashicorp/terraform-plugin-testing v1.13.3 github.com/jinzhu/copier v0.3.2 github.com/minsikl/netscaler-nitro-go v0.0.0-20170827154432-5b14ce3643e3 github.com/mitchellh/go-homedir v1.1.0 diff --git a/go.sum b/go.sum index dd621ac6df..96ecdd3429 100644 --- a/go.sum +++ b/go.sum @@ -753,8 +753,6 @@ github.com/hashicorp/terraform-plugin-log v0.9.0 h1:i7hOA+vdAItN1/7UrfBqBwvYPQ9T github.com/hashicorp/terraform-plugin-log v0.9.0/go.mod h1:rKL8egZQ/eXSyDqzLUuwUYLVdlYeamldAHSxjUFADow= github.com/hashicorp/terraform-plugin-sdk/v2 v2.38.1 h1:mlAq/OrMlg04IuJT7NpefI1wwtdpWudnEmjuQs04t/4= github.com/hashicorp/terraform-plugin-sdk/v2 v2.38.1/go.mod h1:GQhpKVvvuwzD79e8/NZ+xzj+ZpWovdPAe8nfV/skwNU= -github.com/hashicorp/terraform-plugin-testing v1.13.3 h1:QLi/khB8Z0a5L54AfPrHukFpnwsGL8cwwswj4RZduCo= -github.com/hashicorp/terraform-plugin-testing v1.13.3/go.mod h1:WHQ9FDdiLoneey2/QHpGM/6SAYf4A7AZazVg7230pLE= github.com/hashicorp/terraform-registry-address v0.4.0 h1:S1yCGomj30Sao4l5BMPjTGZmCNzuv7/GDTDX99E9gTk= github.com/hashicorp/terraform-registry-address v0.4.0/go.mod h1:LRS1Ay0+mAiRkUyltGT+UHWkIqTFvigGn/LbMshfflE= github.com/hashicorp/terraform-svchost v0.1.1 h1:EZZimZ1GxdqFRinZ1tpJwVxxt49xc/S52uzrw4x0jKQ= diff --git a/ibm/acctest/acctest.go b/ibm/acctest/acctest.go index c744e35a65..eee5b2b3f0 100644 --- a/ibm/acctest/acctest.go +++ b/ibm/acctest/acctest.go @@ -389,6 +389,10 @@ var ( COSApiKey string ) +var ( + DRApiKey string +) + // For Code Engine var ( CeResourceGroupID string @@ -1962,6 +1966,12 @@ func init() { fmt.Println("[WARN] Set the environment variable IES_API_KEY for testing Event streams targets, the tests will fail if this is not set") } + DRApiKey = os.Getenv("DR_API_KEY") + if DRApiKey == "" { + DRApiKey = "xxxxxxxxxxxx" // pragma: allowlist secret + fmt.Println("[WARN] Set the environment variable IES_API_KEY for testing Event streams targets, the tests will fail if this is not set") + } + EnterpriseCRN = os.Getenv("ENTERPRISE_CRN") if EnterpriseCRN == "" { fmt.Println("[WARN] Set the environment variable ENTERPRISE_CRN for testing enterprise backup policy, the tests will fail if this is not set") diff --git a/ibm/service/drautomationservice/data_source_ibm_pdr_get_dr_locations_test.go b/ibm/service/drautomationservice/data_source_ibm_pdr_get_dr_locations_test.go index 223653a83b..d714fd7ea8 100644 --- a/ibm/service/drautomationservice/data_source_ibm_pdr_get_dr_locations_test.go +++ b/ibm/service/drautomationservice/data_source_ibm_pdr_get_dr_locations_test.go @@ -11,7 +11,7 @@ import ( "fmt" "testing" - "github.com/hashicorp/terraform-plugin-testing/helper/resource" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" acc "github.com/IBM-Cloud/terraform-provider-ibm/ibm/acctest" "github.com/IBM-Cloud/terraform-provider-ibm/ibm/service/drautomationservice" @@ -40,7 +40,7 @@ func TestAccIBMPdrGetDrLocationsDataSourceBasic(t *testing.T) { func testAccCheckIBMPdrGetDrLocationsDataSourceConfigBasic() string { return fmt.Sprintf(` data "ibm_pdr_get_dr_locations" "pdr_get_dr_locations_instance" { - instance_id = "crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::" + instance_id = "crn:v1:staging:public:power-dr-automation:global:a/b68c234e719144b18598ae4a7b80c44c:492fef47-3ebf-4090-b089-e9b4199878b6::" } `) } diff --git a/ibm/service/drautomationservice/data_source_ibm_pdr_get_dr_summary_response_test.go b/ibm/service/drautomationservice/data_source_ibm_pdr_get_dr_summary_response_test.go index 3f69a735ee..c62812bff5 100644 --- a/ibm/service/drautomationservice/data_source_ibm_pdr_get_dr_summary_response_test.go +++ b/ibm/service/drautomationservice/data_source_ibm_pdr_get_dr_summary_response_test.go @@ -11,7 +11,7 @@ import ( "fmt" "testing" - "github.com/hashicorp/terraform-plugin-testing/helper/resource" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" acc "github.com/IBM-Cloud/terraform-provider-ibm/ibm/acctest" "github.com/IBM-Cloud/terraform-provider-ibm/ibm/service/drautomationservice" @@ -43,7 +43,7 @@ func TestAccIBMPdrGetDrSummaryResponseDataSourceBasic(t *testing.T) { func testAccCheckIBMPdrGetDrSummaryResponseDataSourceConfigBasic() string { return fmt.Sprintf(` data "ibm_pdr_get_dr_summary_response" "pdr_get_dr_summary_response_instance" { - instance_id = "crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::" + instance_id = "crn:v1:staging:public:power-dr-automation:global:a/b68c234e719144b18598ae4a7b80c44c:492fef47-3ebf-4090-b089-e9b4199878b6::" } `) } diff --git a/ibm/service/drautomationservice/data_source_ibm_pdr_get_event_test.go b/ibm/service/drautomationservice/data_source_ibm_pdr_get_event_test.go index 63cd0388eb..2d93aeb298 100644 --- a/ibm/service/drautomationservice/data_source_ibm_pdr_get_event_test.go +++ b/ibm/service/drautomationservice/data_source_ibm_pdr_get_event_test.go @@ -11,7 +11,7 @@ import ( "fmt" "testing" - "github.com/hashicorp/terraform-plugin-testing/helper/resource" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" acc "github.com/IBM-Cloud/terraform-provider-ibm/ibm/acctest" "github.com/IBM-Cloud/terraform-provider-ibm/ibm/service/drautomationservice" @@ -46,8 +46,8 @@ func TestAccIBMPdrGetEventDataSourceBasic(t *testing.T) { func testAccCheckIBMPdrGetEventDataSourceConfigBasic() string { return fmt.Sprintf(` data "ibm_pdr_get_event" "pdr_get_event_instance" { - instance_id = "crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::" - event_id = "00116b2a-9326-4024-839e-fb5364b76898" + instance_id = "crn:v1:staging:public:power-dr-automation:global:a/b68c234e719144b18598ae4a7b80c44c:492fef47-3ebf-4090-b089-e9b4199878b6::" + event_id = "492fef47-3ebf-4090-b089-e9b4199878b6-1764568221673678123" } `) } diff --git a/ibm/service/drautomationservice/data_source_ibm_pdr_get_events_test.go b/ibm/service/drautomationservice/data_source_ibm_pdr_get_events_test.go index 7b5c460086..9cc8420409 100644 --- a/ibm/service/drautomationservice/data_source_ibm_pdr_get_events_test.go +++ b/ibm/service/drautomationservice/data_source_ibm_pdr_get_events_test.go @@ -11,7 +11,7 @@ import ( "fmt" "testing" - "github.com/hashicorp/terraform-plugin-testing/helper/resource" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" acc "github.com/IBM-Cloud/terraform-provider-ibm/ibm/acctest" "github.com/IBM-Cloud/terraform-provider-ibm/ibm/service/drautomationservice" @@ -41,10 +41,10 @@ func TestAccIBMPdrGetEventsDataSourceBasic(t *testing.T) { func testAccCheckIBMPdrGetEventsDataSourceConfigBasic() string { return fmt.Sprintf(` data "ibm_pdr_get_events" "pdr_get_events_instance" { - instance_id = "crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::" - time = "2025-06-19T23:59:59Z" + instance_id = "crn:v1:staging:public:power-dr-automation:global:a/b68c234e719144b18598ae4a7b80c44c:492fef47-3ebf-4090-b089-e9b4199878b6::" + time = "2025-11-30T23:59:59Z" from_time = "2025-06-19T00:00:00Z" - to_time = "2025-06-19T23:59:59Z" + to_time = "2025-12-01T23:59:59Z" } `) } diff --git a/ibm/service/drautomationservice/data_source_ibm_pdr_get_grs_location_pairs_test.go b/ibm/service/drautomationservice/data_source_ibm_pdr_get_grs_location_pairs_test.go index 31b68d9730..dfac71f0d0 100644 --- a/ibm/service/drautomationservice/data_source_ibm_pdr_get_grs_location_pairs_test.go +++ b/ibm/service/drautomationservice/data_source_ibm_pdr_get_grs_location_pairs_test.go @@ -11,7 +11,7 @@ import ( "fmt" "testing" - "github.com/hashicorp/terraform-plugin-testing/helper/resource" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" acc "github.com/IBM-Cloud/terraform-provider-ibm/ibm/acctest" ) @@ -35,7 +35,8 @@ func TestAccIBMPdrGetGrsLocationPairsDataSourceBasic(t *testing.T) { func testAccCheckIBMPdrGetGrsLocationPairsDataSourceConfigBasic() string { return fmt.Sprintf(` data "ibm_pdr_get_grs_location_pairs" "pdr_get_grs_location_pairs_instance" { - instance_id = "crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::" + instance_id = "crn:v1:staging:public:power-dr-automation:global:a/b68c234e719144b18598ae4a7b80c44c:492fef47-3ebf-4090-b089-e9b4199878b6::" + } `) } diff --git a/ibm/service/drautomationservice/data_source_ibm_pdr_get_machine_types_test.go b/ibm/service/drautomationservice/data_source_ibm_pdr_get_machine_types_test.go index 784fa40066..b028673eb5 100644 --- a/ibm/service/drautomationservice/data_source_ibm_pdr_get_machine_types_test.go +++ b/ibm/service/drautomationservice/data_source_ibm_pdr_get_machine_types_test.go @@ -11,7 +11,7 @@ import ( "fmt" "testing" - "github.com/hashicorp/terraform-plugin-testing/helper/resource" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" acc "github.com/IBM-Cloud/terraform-provider-ibm/ibm/acctest" ) @@ -36,7 +36,7 @@ func TestAccIBMPdrGetMachineTypesDataSourceBasic(t *testing.T) { func testAccCheckIBMPdrGetMachineTypesDataSourceConfigBasic() string { return fmt.Sprintf(` data "ibm_pdr_get_machine_types" "pdr_get_machine_types_instance" { - instance_id = "crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::" + instance_id = "crn:v1:staging:public:power-dr-automation:global:a/b68c234e719144b18598ae4a7b80c44c:492fef47-3ebf-4090-b089-e9b4199878b6::" primary_workspace_name = "Test-workspace-wdc06" standby_workspace_name = "Test-workspace-wdc07" } diff --git a/ibm/service/drautomationservice/data_source_ibm_pdr_get_managed_vm_list_test.go b/ibm/service/drautomationservice/data_source_ibm_pdr_get_managed_vm_list_test.go index 5c337eb30b..0c2c423cce 100644 --- a/ibm/service/drautomationservice/data_source_ibm_pdr_get_managed_vm_list_test.go +++ b/ibm/service/drautomationservice/data_source_ibm_pdr_get_managed_vm_list_test.go @@ -11,7 +11,7 @@ import ( "fmt" "testing" - "github.com/hashicorp/terraform-plugin-testing/helper/resource" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" acc "github.com/IBM-Cloud/terraform-provider-ibm/ibm/acctest" "github.com/IBM-Cloud/terraform-provider-ibm/ibm/service/drautomationservice" @@ -39,7 +39,7 @@ func TestAccIBMPdrGetManagedVMListDataSourceBasic(t *testing.T) { func testAccCheckIBMPdrGetManagedVMListDataSourceConfigBasic() string { return fmt.Sprintf(` data "ibm_pdr_get_managed_vm_list" "pdr_get_managed_vm_list_instance" { - instance_id = "crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::" + instance_id = "crn:v1:staging:public:power-dr-automation:global:a/b68c234e719144b18598ae4a7b80c44c:492fef47-3ebf-4090-b089-e9b4199878b6::" } `) } diff --git a/ibm/service/drautomationservice/data_source_ibm_pdr_get_powervs_workspace_test.go b/ibm/service/drautomationservice/data_source_ibm_pdr_get_powervs_workspace_test.go index ae5cba9026..349db6c157 100644 --- a/ibm/service/drautomationservice/data_source_ibm_pdr_get_powervs_workspace_test.go +++ b/ibm/service/drautomationservice/data_source_ibm_pdr_get_powervs_workspace_test.go @@ -11,7 +11,7 @@ import ( "fmt" "testing" - "github.com/hashicorp/terraform-plugin-testing/helper/resource" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" acc "github.com/IBM-Cloud/terraform-provider-ibm/ibm/acctest" "github.com/IBM-Cloud/terraform-provider-ibm/ibm/service/drautomationservice" @@ -42,9 +42,8 @@ func TestAccIBMPdrGetPowervsWorkspaceDataSourceBasic(t *testing.T) { func testAccCheckIBMPdrGetPowervsWorkspaceDataSourceConfigBasic() string { return fmt.Sprintf(` data "ibm_pdr_get_powervs_workspace" "pdr_get_powervs_workspace_instance" { - instance_id = "crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::" - location_id = "location_id" - If-None-Match = "If-None-Match" + instance_id = "crn:v1:staging:public:power-dr-automation:global:a/b68c234e719144b18598ae4a7b80c44c:492fef47-3ebf-4090-b089-e9b4199878b6::" + location_id = "lon04" } `) } diff --git a/ibm/service/drautomationservice/data_source_ibm_pdr_last_operation_test.go b/ibm/service/drautomationservice/data_source_ibm_pdr_last_operation_test.go index 3be8040f71..0eb1ce37e4 100644 --- a/ibm/service/drautomationservice/data_source_ibm_pdr_last_operation_test.go +++ b/ibm/service/drautomationservice/data_source_ibm_pdr_last_operation_test.go @@ -11,7 +11,7 @@ import ( "fmt" "testing" - "github.com/hashicorp/terraform-plugin-testing/helper/resource" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" acc "github.com/IBM-Cloud/terraform-provider-ibm/ibm/acctest" ) @@ -21,7 +21,7 @@ func TestAccIBMPdrLastOperationDataSourceBasic(t *testing.T) { PreCheck: func() { acc.TestAccPreCheck(t) }, Providers: acc.TestAccProviders, Steps: []resource.TestStep{ - resource.TestStep{ + { Config: testAccCheckIBMPdrLastOperationDataSourceConfigBasic(), Check: resource.ComposeTestCheckFunc( resource.TestCheckResourceAttrSet("data.ibm_pdr_last_operation.pdr_last_operation_instance", "id"), @@ -31,7 +31,7 @@ func TestAccIBMPdrLastOperationDataSourceBasic(t *testing.T) { resource.TestCheckResourceAttrSet("data.ibm_pdr_last_operation.pdr_last_operation_instance", "last_updated_orchestrator_deployment_time"), resource.TestCheckResourceAttrSet("data.ibm_pdr_last_operation.pdr_last_operation_instance", "last_updated_standby_orchestrator_deployment_time"), resource.TestCheckResourceAttrSet("data.ibm_pdr_last_operation.pdr_last_operation_instance", "mfa_enabled"), - resource.TestCheckResourceAttrSet("data.ibm_pdr_last_operation.pdr_last_operation_instance", "orch_standby_node_addtion_status"), + resource.TestCheckResourceAttr("data.ibm_pdr_last_operation.pdr_last_operation_instance", "orch_standby_node_addtion_status", ""), resource.TestCheckResourceAttrSet("data.ibm_pdr_last_operation.pdr_last_operation_instance", "orchestrator_cluster_message"), resource.TestCheckResourceAttrSet("data.ibm_pdr_last_operation.pdr_last_operation_instance", "orchestrator_config_status"), resource.TestCheckResourceAttrSet("data.ibm_pdr_last_operation.pdr_last_operation_instance", "orchestrator_ha"), @@ -39,11 +39,11 @@ func TestAccIBMPdrLastOperationDataSourceBasic(t *testing.T) { resource.TestCheckResourceAttrSet("data.ibm_pdr_last_operation.pdr_last_operation_instance", "primary_description"), resource.TestCheckResourceAttrSet("data.ibm_pdr_last_operation.pdr_last_operation_instance", "primary_ip_address"), resource.TestCheckResourceAttrSet("data.ibm_pdr_last_operation.pdr_last_operation_instance", "primary_orchestrator_status"), - resource.TestCheckResourceAttrSet("data.ibm_pdr_last_operation.pdr_last_operation_instance", "recovery_location"), + resource.TestCheckResourceAttr("data.ibm_pdr_last_operation.pdr_last_operation_instance", "recovery_location", ""), resource.TestCheckResourceAttrSet("data.ibm_pdr_last_operation.pdr_last_operation_instance", "resource_group"), - resource.TestCheckResourceAttrSet("data.ibm_pdr_last_operation.pdr_last_operation_instance", "standby_description"), - resource.TestCheckResourceAttrSet("data.ibm_pdr_last_operation.pdr_last_operation_instance", "standby_ip_address"), - resource.TestCheckResourceAttrSet("data.ibm_pdr_last_operation.pdr_last_operation_instance", "standby_status"), + resource.TestCheckResourceAttr("data.ibm_pdr_last_operation.pdr_last_operation_instance", "standby_description", ""), + resource.TestCheckResourceAttr("data.ibm_pdr_last_operation.pdr_last_operation_instance", "standby_ip_address", ""), + resource.TestCheckResourceAttr("data.ibm_pdr_last_operation.pdr_last_operation_instance", "standby_status", ""), resource.TestCheckResourceAttrSet("data.ibm_pdr_last_operation.pdr_last_operation_instance", "status"), ), }, @@ -53,8 +53,8 @@ func TestAccIBMPdrLastOperationDataSourceBasic(t *testing.T) { func testAccCheckIBMPdrLastOperationDataSourceConfigBasic() string { return fmt.Sprintf(` - data "ibm_pdr_last_operation" "pdr_last_operation_instance" { - instance_id = "crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::" - } - `) +data "ibm_pdr_last_operation" "pdr_last_operation_instance" { + instance_id = "crn:v1:staging:public:power-dr-automation:global:a/b68c234e719144b18598ae4a7b80c44c:492fef47-3ebf-4090-b089-e9b4199878b6::" +} +`) } diff --git a/ibm/service/drautomationservice/resource_ibm_pdr_managedr_test.go b/ibm/service/drautomationservice/resource_ibm_pdr_managedr_test.go index 486ca5258d..4153d9ff57 100644 --- a/ibm/service/drautomationservice/resource_ibm_pdr_managedr_test.go +++ b/ibm/service/drautomationservice/resource_ibm_pdr_managedr_test.go @@ -7,9 +7,9 @@ import ( "fmt" "testing" - "github.com/hashicorp/terraform-plugin-testing/helper/acctest" - "github.com/hashicorp/terraform-plugin-testing/helper/resource" - "github.com/hashicorp/terraform-plugin-testing/terraform" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" + "github.com/hashicorp/terraform-plugin-sdk/v2/terraform" acc "github.com/IBM-Cloud/terraform-provider-ibm/ibm/acctest" "github.com/IBM-Cloud/terraform-provider-ibm/ibm/conns" @@ -19,7 +19,7 @@ import ( func TestAccIBMPdrManagedrBasic(t *testing.T) { var conf drautomationservicev1.ServiceInstanceManageDr - instanceID := fmt.Sprintf("tf_instance_id_%d", acctest.RandIntRange(10, 100)) + instanceID := "crn:v1:staging:public:power-dr-automation:global:a/b68c234e719144b18598ae4a7b80c44c:579bb45a-e8e3-4f43-a3cf-0d693440b804::" resource.Test(t, resource.TestCase{ PreCheck: func() { acc.TestAccPreCheck(t) }, @@ -38,10 +38,9 @@ func TestAccIBMPdrManagedrBasic(t *testing.T) { func TestAccIBMPdrManagedrAllArgs(t *testing.T) { var conf drautomationservicev1.ServiceInstanceManageDr - instanceID := fmt.Sprintf("tf_instance_id_%d", acctest.RandIntRange(10, 100)) - standByRedeploy := fmt.Sprintf("tf_stand_by_redeploy_%d", acctest.RandIntRange(10, 100)) + instanceID := "crn:v1:staging:public:power-dr-automation:global:a/b68c234e719144b18598ae4a7b80c44c:579bb45a-e8e3-4f43-a3cf-0d693440b804::" + standByRedeploy := "false" acceptLanguage := fmt.Sprintf("tf_accept_language_%d", acctest.RandIntRange(10, 100)) - ifNoneMatch := fmt.Sprintf("tf_if_none_match_%d", acctest.RandIntRange(10, 100)) acceptsIncomplete := "true" resource.Test(t, resource.TestCase{ @@ -49,13 +48,12 @@ func TestAccIBMPdrManagedrAllArgs(t *testing.T) { Providers: acc.TestAccProviders, Steps: []resource.TestStep{ resource.TestStep{ - Config: testAccCheckIBMPdrManagedrConfig(instanceID, standByRedeploy, acceptLanguage, ifNoneMatch, acceptsIncomplete), + Config: testAccCheckIBMPdrManagedrConfig(instanceID, standByRedeploy, acceptLanguage, acceptsIncomplete), Check: resource.ComposeAggregateTestCheckFunc( testAccCheckIBMPdrManagedrExists("ibm_pdr_managedr.pdr_managedr_instance", conf), resource.TestCheckResourceAttr("ibm_pdr_managedr.pdr_managedr_instance", "instance_id", instanceID), resource.TestCheckResourceAttr("ibm_pdr_managedr.pdr_managedr_instance", "stand_by_redeploy", standByRedeploy), resource.TestCheckResourceAttr("ibm_pdr_managedr.pdr_managedr_instance", "accept_language", acceptLanguage), - resource.TestCheckResourceAttr("ibm_pdr_managedr.pdr_managedr_instance", "if_none_match", ifNoneMatch), resource.TestCheckResourceAttr("ibm_pdr_managedr.pdr_managedr_instance", "accepts_incomplete", acceptsIncomplete), ), }, @@ -69,24 +67,46 @@ func TestAccIBMPdrManagedrAllArgs(t *testing.T) { } func testAccCheckIBMPdrManagedrConfigBasic(instanceID string) string { + apiKey := acc.DRApiKey return fmt.Sprintf(` resource "ibm_pdr_managedr" "pdr_managedr_instance" { instance_id = "%s" + orchestrator_ha = "false" + orchestrator_location_type = "off-premises" + location_id = "mad04" + orchestrator_workspace_id = "dbc77621-e7cb-4d70-b662-776ff2c3317f" + orchestrator_name = "terraform_orch_vm_04" + orchestrator_password = "Password1234567" + machine_type = "e1080" + tier = "tier1" + ssh_key_name = "vijaykey" + action = "done" + api_key = "%s" } - `, instanceID) + `, instanceID, apiKey) } -func testAccCheckIBMPdrManagedrConfig(instanceID string, standByRedeploy string, acceptLanguage string, ifNoneMatch string, acceptsIncomplete string) string { +func testAccCheckIBMPdrManagedrConfig(instanceID string, standByRedeploy string, acceptLanguage string, acceptsIncomplete string) string { + apiKey := acc.DRApiKey return fmt.Sprintf(` resource "ibm_pdr_managedr" "pdr_managedr_instance" { instance_id = "%s" - stand_by_redeploy = "%s" accept_language = "%s" - if_none_match = "%s" accepts_incomplete = %s + orchestrator_ha = "false" + orchestrator_location_type = "off-premises" + location_id = "mad04" + orchestrator_workspace_id = "dbc77621-e7cb-4d70-b662-776ff2c3317f" + orchestrator_name = "terraform_orch_vm_04" + orchestrator_password = "Password1234567" + machine_type = "e1080" + tier = "tier1" + ssh_key_name = "vijaykey" + action = "done" + api_key = "%s" } - `, instanceID, standByRedeploy, acceptLanguage, ifNoneMatch, acceptsIncomplete) + `, instanceID, acceptLanguage, acceptsIncomplete, apiKey) } func testAccCheckIBMPdrManagedrExists(n string, obj drautomationservicev1.ServiceInstanceManageDr) resource.TestCheckFunc { @@ -104,13 +124,12 @@ func testAccCheckIBMPdrManagedrExists(n string, obj drautomationservicev1.Servic getManageDrOptions := &drautomationservicev1.GetManageDrOptions{} - parts, err := flex.SepIdParts(rs.Primary.ID, "/") - if err != nil { - return err - } + // parts, err := flex.SepIdParts(rs.Primary.ID, "/") + // if err != nil { + // return err + // } - getManageDrOptions.SetInstanceID(parts[0]) - getManageDrOptions.SetInstanceID(parts[1]) + getManageDrOptions.SetInstanceID(rs.Primary.ID) serviceInstanceManageDr, _, err := drAutomationServiceClient.GetManageDr(getManageDrOptions) if err != nil { diff --git a/ibm/service/drautomationservice/resource_ibm_pdr_validate_apikey_test.go b/ibm/service/drautomationservice/resource_ibm_pdr_validate_apikey_test.go index 67ec0629a8..145ddebc94 100644 --- a/ibm/service/drautomationservice/resource_ibm_pdr_validate_apikey_test.go +++ b/ibm/service/drautomationservice/resource_ibm_pdr_validate_apikey_test.go @@ -7,9 +7,9 @@ import ( "fmt" "testing" - "github.com/hashicorp/terraform-plugin-testing/helper/acctest" - "github.com/hashicorp/terraform-plugin-testing/helper/resource" - "github.com/hashicorp/terraform-plugin-testing/terraform" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" + "github.com/hashicorp/terraform-plugin-sdk/v2/terraform" acc "github.com/IBM-Cloud/terraform-provider-ibm/ibm/acctest" "github.com/IBM-Cloud/terraform-provider-ibm/ibm/conns" @@ -19,12 +19,11 @@ import ( func TestAccIBMPdrValidateApikeyBasic(t *testing.T) { var conf drautomationservicev1.ValidationKeyResponse - instanceID := fmt.Sprintf("tf_instance_id_%d", acctest.RandIntRange(10, 100)) + instanceID := "crn:v1:staging:public:power-dr-automation:global:a/b68c234e719144b18598ae4a7b80c44c:492fef47-3ebf-4090-b089-e9b4199878b6::" resource.Test(t, resource.TestCase{ - PreCheck: func() { acc.TestAccPreCheck(t) }, - Providers: acc.TestAccProviders, - CheckDestroy: testAccCheckIBMPdrValidateApikeyDestroy, + PreCheck: func() { acc.TestAccPreCheck(t) }, + Providers: acc.TestAccProviders, Steps: []resource.TestStep{ resource.TestStep{ Config: testAccCheckIBMPdrValidateApikeyConfigBasic(instanceID), @@ -39,32 +38,27 @@ func TestAccIBMPdrValidateApikeyBasic(t *testing.T) { func TestAccIBMPdrValidateApikeyAllArgs(t *testing.T) { var conf drautomationservicev1.ValidationKeyResponse - instanceID := fmt.Sprintf("tf_instance_id_%d", acctest.RandIntRange(10, 100)) + instanceID := "crn:v1:staging:public:power-dr-automation:global:a/b68c234e719144b18598ae4a7b80c44c:492fef47-3ebf-4090-b089-e9b4199878b6::" acceptLanguage := fmt.Sprintf("tf_accept_language_%d", acctest.RandIntRange(10, 100)) - ifNoneMatch := fmt.Sprintf("tf_if_none_match_%d", acctest.RandIntRange(10, 100)) acceptLanguageUpdate := fmt.Sprintf("tf_accept_language_%d", acctest.RandIntRange(10, 100)) - ifNoneMatchUpdate := fmt.Sprintf("tf_if_none_match_%d", acctest.RandIntRange(10, 100)) resource.Test(t, resource.TestCase{ - PreCheck: func() { acc.TestAccPreCheck(t) }, - Providers: acc.TestAccProviders, - CheckDestroy: testAccCheckIBMPdrValidateApikeyDestroy, + PreCheck: func() { acc.TestAccPreCheck(t) }, + Providers: acc.TestAccProviders, Steps: []resource.TestStep{ resource.TestStep{ - Config: testAccCheckIBMPdrValidateApikeyConfig(instanceID, acceptLanguage, ifNoneMatch), + Config: testAccCheckIBMPdrValidateApikeyConfig(instanceID, acceptLanguage), Check: resource.ComposeAggregateTestCheckFunc( testAccCheckIBMPdrValidateApikeyExists("ibm_pdr_validate_apikey.pdr_validate_apikey_instance", conf), resource.TestCheckResourceAttr("ibm_pdr_validate_apikey.pdr_validate_apikey_instance", "instance_id", instanceID), resource.TestCheckResourceAttr("ibm_pdr_validate_apikey.pdr_validate_apikey_instance", "accept_language", acceptLanguage), - resource.TestCheckResourceAttr("ibm_pdr_validate_apikey.pdr_validate_apikey_instance", "if_none_match", ifNoneMatch), ), }, resource.TestStep{ - Config: testAccCheckIBMPdrValidateApikeyConfig(instanceID, acceptLanguageUpdate, ifNoneMatchUpdate), + Config: testAccCheckIBMPdrValidateApikeyConfig(instanceID, acceptLanguageUpdate), Check: resource.ComposeAggregateTestCheckFunc( resource.TestCheckResourceAttr("ibm_pdr_validate_apikey.pdr_validate_apikey_instance", "instance_id", instanceID), resource.TestCheckResourceAttr("ibm_pdr_validate_apikey.pdr_validate_apikey_instance", "accept_language", acceptLanguageUpdate), - resource.TestCheckResourceAttr("ibm_pdr_validate_apikey.pdr_validate_apikey_instance", "if_none_match", ifNoneMatchUpdate), ), }, resource.TestStep{ @@ -77,22 +71,24 @@ func TestAccIBMPdrValidateApikeyAllArgs(t *testing.T) { } func testAccCheckIBMPdrValidateApikeyConfigBasic(instanceID string) string { + apiKey := acc.DRApiKey return fmt.Sprintf(` resource "ibm_pdr_validate_apikey" "pdr_validate_apikey_instance" { instance_id = "%s" + api_key = "%s" } - `, instanceID) + `, instanceID, apiKey) } -func testAccCheckIBMPdrValidateApikeyConfig(instanceID string, acceptLanguage string, ifNoneMatch string) string { - return fmt.Sprintf(` - +func testAccCheckIBMPdrValidateApikeyConfig(instanceID string, acceptLanguage string) string { + apiKey := acc.DRApiKey + return fmt.Sprintf(` resource "ibm_pdr_validate_apikey" "pdr_validate_apikey_instance" { instance_id = "%s" accept_language = "%s" - if_none_match = "%s" + api_key = "%s" } - `, instanceID, acceptLanguage, ifNoneMatch) + `, instanceID, acceptLanguage, apiKey) } func testAccCheckIBMPdrValidateApikeyExists(n string, obj drautomationservicev1.ValidationKeyResponse) resource.TestCheckFunc { @@ -110,13 +106,12 @@ func testAccCheckIBMPdrValidateApikeyExists(n string, obj drautomationservicev1. getApikeyOptions := &drautomationservicev1.GetApikeyOptions{} - parts, err := flex.SepIdParts(rs.Primary.ID, "/") - if err != nil { - return err - } + // parts, err := flex.SepIdParts(rs.Primary.ID, "/") + // if err != nil { + // return err + // } - getApikeyOptions.SetInstanceID(parts[0]) - getApikeyOptions.SetInstanceID(parts[1]) + getApikeyOptions.SetInstanceID(rs.Primary.ID) validationKeyResponse, _, err := drAutomationServiceClient.GetApikey(getApikeyOptions) if err != nil { @@ -146,7 +141,6 @@ func testAccCheckIBMPdrValidateApikeyDestroy(s *terraform.State) error { } getApikeyOptions.SetInstanceID(parts[0]) - getApikeyOptions.SetInstanceID(parts[1]) // Try to find the key _, response, err := drAutomationServiceClient.GetApikey(getApikeyOptions) From e4550ead14414ead38dba95edd6144b70898e91c Mon Sep 17 00:00:00 2001 From: Mani-Raj-Langaru1 Date: Mon, 1 Dec 2025 07:22:57 -0500 Subject: [PATCH 11/13] fixed go.mod issue --- go.mod | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/go.mod b/go.mod index fe7a9db63c..14e1d029e4 100644 --- a/go.mod +++ b/go.mod @@ -205,7 +205,7 @@ require ( go.yaml.in/yaml/v2 v2.4.2 // indirect golang.org/x/mod v0.29.0 // indirect golang.org/x/net v0.47.0 // indirect - golang.org/x/oauth2 v0.27.0 // indirect + golang.org/x/oauth2 v0.30.0 // indirect golang.org/x/sync v0.18.0 // indirect golang.org/x/sys v0.38.0 // indirect golang.org/x/term v0.37.0 // indirect From 9d9c16f30b7ca4fe99e6790f974d5bed25fa5e9d Mon Sep 17 00:00:00 2001 From: Mani-Raj-Langaru1 Date: Mon, 1 Dec 2025 07:29:48 -0500 Subject: [PATCH 12/13] validate apikey doc update --- website/docs/r/pdr_validate_apikey.html.markdown | 14 -------------- 1 file changed, 14 deletions(-) diff --git a/website/docs/r/pdr_validate_apikey.html.markdown b/website/docs/r/pdr_validate_apikey.html.markdown index af9e8026a3..a9170dd373 100755 --- a/website/docs/r/pdr_validate_apikey.html.markdown +++ b/website/docs/r/pdr_validate_apikey.html.markdown @@ -38,18 +38,4 @@ After your resource is created, you can read values from the listed arguments an * `etag` - ETag identifier for pdr_validate_apikey. -## Import -You can import the `ibm_pdr_validate_apikey` resource by using `id`. -The `id` property can be formed from `instance_id`, and `instance_id` in the following format: - -
-<instance_id>/<instance_id>
-
-* `instance_id`: A string in the format `crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::`. instance id of instance to provision. -* `instance_id`: A string in the format `crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::`. Unique identifier of the API key. - -# Syntax -
-$ terraform import ibm_pdr_validate_apikey.pdr_validate_apikey <instance_id>/<instance_id>
-
From 5d889ef6334e5f3773d8f94583c0d7d0f17161f2 Mon Sep 17 00:00:00 2001 From: Mani-Raj-Langaru1 Date: Fri, 5 Dec 2025 02:29:33 -0500 Subject: [PATCH 13/13] updated the required fields in managedr api and update the crn to instanceID in test.go files --- ...ta_source_ibm_pdr_get_dr_locations_test.go | 2 +- ...ce_ibm_pdr_get_dr_summary_response_test.go | 2 +- .../data_source_ibm_pdr_get_event_test.go | 2 +- .../data_source_ibm_pdr_get_events_test.go | 2 +- ...rce_ibm_pdr_get_grs_location_pairs_test.go | 2 +- ...a_source_ibm_pdr_get_machine_types_test.go | 2 +- ...source_ibm_pdr_get_managed_vm_list_test.go | 2 +- ...urce_ibm_pdr_get_powervs_workspace_test.go | 2 +- ...data_source_ibm_pdr_last_operation_test.go | 2 +- .../dra-go-sdk/.secrets.baseline | 38 +- .../dra-go-sdk/common/headers.go | 12 +- .../dr_automation_service_v1.go | 439 ++++--------- .../dr_automation_service_v1_examples_test.go | 28 +- ..._automation_service_v1_integration_test.go | 119 ++-- .../dr_automation_service_v1_test.go | 576 ++++++------------ .../resource_ibm_pdr_managedr.go | 48 +- .../resource_ibm_pdr_validate_apikey_test.go | 4 +- 17 files changed, 422 insertions(+), 860 deletions(-) diff --git a/ibm/service/drautomationservice/data_source_ibm_pdr_get_dr_locations_test.go b/ibm/service/drautomationservice/data_source_ibm_pdr_get_dr_locations_test.go index d714fd7ea8..4acd6be804 100644 --- a/ibm/service/drautomationservice/data_source_ibm_pdr_get_dr_locations_test.go +++ b/ibm/service/drautomationservice/data_source_ibm_pdr_get_dr_locations_test.go @@ -40,7 +40,7 @@ func TestAccIBMPdrGetDrLocationsDataSourceBasic(t *testing.T) { func testAccCheckIBMPdrGetDrLocationsDataSourceConfigBasic() string { return fmt.Sprintf(` data "ibm_pdr_get_dr_locations" "pdr_get_dr_locations_instance" { - instance_id = "crn:v1:staging:public:power-dr-automation:global:a/b68c234e719144b18598ae4a7b80c44c:492fef47-3ebf-4090-b089-e9b4199878b6::" + instance_id = "123456d3-1122-3344-b67d-4389b44b7bf9" } `) } diff --git a/ibm/service/drautomationservice/data_source_ibm_pdr_get_dr_summary_response_test.go b/ibm/service/drautomationservice/data_source_ibm_pdr_get_dr_summary_response_test.go index c62812bff5..34082338c6 100644 --- a/ibm/service/drautomationservice/data_source_ibm_pdr_get_dr_summary_response_test.go +++ b/ibm/service/drautomationservice/data_source_ibm_pdr_get_dr_summary_response_test.go @@ -43,7 +43,7 @@ func TestAccIBMPdrGetDrSummaryResponseDataSourceBasic(t *testing.T) { func testAccCheckIBMPdrGetDrSummaryResponseDataSourceConfigBasic() string { return fmt.Sprintf(` data "ibm_pdr_get_dr_summary_response" "pdr_get_dr_summary_response_instance" { - instance_id = "crn:v1:staging:public:power-dr-automation:global:a/b68c234e719144b18598ae4a7b80c44c:492fef47-3ebf-4090-b089-e9b4199878b6::" + instance_id = "123456d3-1122-3344-b67d-4389b44b7bf9" } `) } diff --git a/ibm/service/drautomationservice/data_source_ibm_pdr_get_event_test.go b/ibm/service/drautomationservice/data_source_ibm_pdr_get_event_test.go index 2d93aeb298..847c38bbcc 100644 --- a/ibm/service/drautomationservice/data_source_ibm_pdr_get_event_test.go +++ b/ibm/service/drautomationservice/data_source_ibm_pdr_get_event_test.go @@ -46,7 +46,7 @@ func TestAccIBMPdrGetEventDataSourceBasic(t *testing.T) { func testAccCheckIBMPdrGetEventDataSourceConfigBasic() string { return fmt.Sprintf(` data "ibm_pdr_get_event" "pdr_get_event_instance" { - instance_id = "crn:v1:staging:public:power-dr-automation:global:a/b68c234e719144b18598ae4a7b80c44c:492fef47-3ebf-4090-b089-e9b4199878b6::" + instance_id = "123456d3-1122-3344-b67d-4389b44b7bf9" event_id = "492fef47-3ebf-4090-b089-e9b4199878b6-1764568221673678123" } `) diff --git a/ibm/service/drautomationservice/data_source_ibm_pdr_get_events_test.go b/ibm/service/drautomationservice/data_source_ibm_pdr_get_events_test.go index 9cc8420409..72a404fc07 100644 --- a/ibm/service/drautomationservice/data_source_ibm_pdr_get_events_test.go +++ b/ibm/service/drautomationservice/data_source_ibm_pdr_get_events_test.go @@ -41,7 +41,7 @@ func TestAccIBMPdrGetEventsDataSourceBasic(t *testing.T) { func testAccCheckIBMPdrGetEventsDataSourceConfigBasic() string { return fmt.Sprintf(` data "ibm_pdr_get_events" "pdr_get_events_instance" { - instance_id = "crn:v1:staging:public:power-dr-automation:global:a/b68c234e719144b18598ae4a7b80c44c:492fef47-3ebf-4090-b089-e9b4199878b6::" + instance_id = "123456d3-1122-3344-b67d-4389b44b7bf9" time = "2025-11-30T23:59:59Z" from_time = "2025-06-19T00:00:00Z" to_time = "2025-12-01T23:59:59Z" diff --git a/ibm/service/drautomationservice/data_source_ibm_pdr_get_grs_location_pairs_test.go b/ibm/service/drautomationservice/data_source_ibm_pdr_get_grs_location_pairs_test.go index dfac71f0d0..75ada78649 100644 --- a/ibm/service/drautomationservice/data_source_ibm_pdr_get_grs_location_pairs_test.go +++ b/ibm/service/drautomationservice/data_source_ibm_pdr_get_grs_location_pairs_test.go @@ -35,7 +35,7 @@ func TestAccIBMPdrGetGrsLocationPairsDataSourceBasic(t *testing.T) { func testAccCheckIBMPdrGetGrsLocationPairsDataSourceConfigBasic() string { return fmt.Sprintf(` data "ibm_pdr_get_grs_location_pairs" "pdr_get_grs_location_pairs_instance" { - instance_id = "crn:v1:staging:public:power-dr-automation:global:a/b68c234e719144b18598ae4a7b80c44c:492fef47-3ebf-4090-b089-e9b4199878b6::" + instance_id = "123456d3-1122-3344-b67d-4389b44b7bf9" } `) diff --git a/ibm/service/drautomationservice/data_source_ibm_pdr_get_machine_types_test.go b/ibm/service/drautomationservice/data_source_ibm_pdr_get_machine_types_test.go index b028673eb5..c838183f1d 100644 --- a/ibm/service/drautomationservice/data_source_ibm_pdr_get_machine_types_test.go +++ b/ibm/service/drautomationservice/data_source_ibm_pdr_get_machine_types_test.go @@ -36,7 +36,7 @@ func TestAccIBMPdrGetMachineTypesDataSourceBasic(t *testing.T) { func testAccCheckIBMPdrGetMachineTypesDataSourceConfigBasic() string { return fmt.Sprintf(` data "ibm_pdr_get_machine_types" "pdr_get_machine_types_instance" { - instance_id = "crn:v1:staging:public:power-dr-automation:global:a/b68c234e719144b18598ae4a7b80c44c:492fef47-3ebf-4090-b089-e9b4199878b6::" + instance_id = "123456d3-1122-3344-b67d-4389b44b7bf9" primary_workspace_name = "Test-workspace-wdc06" standby_workspace_name = "Test-workspace-wdc07" } diff --git a/ibm/service/drautomationservice/data_source_ibm_pdr_get_managed_vm_list_test.go b/ibm/service/drautomationservice/data_source_ibm_pdr_get_managed_vm_list_test.go index 0c2c423cce..f4938d7faf 100644 --- a/ibm/service/drautomationservice/data_source_ibm_pdr_get_managed_vm_list_test.go +++ b/ibm/service/drautomationservice/data_source_ibm_pdr_get_managed_vm_list_test.go @@ -39,7 +39,7 @@ func TestAccIBMPdrGetManagedVMListDataSourceBasic(t *testing.T) { func testAccCheckIBMPdrGetManagedVMListDataSourceConfigBasic() string { return fmt.Sprintf(` data "ibm_pdr_get_managed_vm_list" "pdr_get_managed_vm_list_instance" { - instance_id = "crn:v1:staging:public:power-dr-automation:global:a/b68c234e719144b18598ae4a7b80c44c:492fef47-3ebf-4090-b089-e9b4199878b6::" + instance_id = "123456d3-1122-3344-b67d-4389b44b7bf9" } `) } diff --git a/ibm/service/drautomationservice/data_source_ibm_pdr_get_powervs_workspace_test.go b/ibm/service/drautomationservice/data_source_ibm_pdr_get_powervs_workspace_test.go index 349db6c157..7ae089bbed 100644 --- a/ibm/service/drautomationservice/data_source_ibm_pdr_get_powervs_workspace_test.go +++ b/ibm/service/drautomationservice/data_source_ibm_pdr_get_powervs_workspace_test.go @@ -42,7 +42,7 @@ func TestAccIBMPdrGetPowervsWorkspaceDataSourceBasic(t *testing.T) { func testAccCheckIBMPdrGetPowervsWorkspaceDataSourceConfigBasic() string { return fmt.Sprintf(` data "ibm_pdr_get_powervs_workspace" "pdr_get_powervs_workspace_instance" { - instance_id = "crn:v1:staging:public:power-dr-automation:global:a/b68c234e719144b18598ae4a7b80c44c:492fef47-3ebf-4090-b089-e9b4199878b6::" + instance_id = "123456d3-1122-3344-b67d-4389b44b7bf9" location_id = "lon04" } `) diff --git a/ibm/service/drautomationservice/data_source_ibm_pdr_last_operation_test.go b/ibm/service/drautomationservice/data_source_ibm_pdr_last_operation_test.go index 0eb1ce37e4..54201a7674 100644 --- a/ibm/service/drautomationservice/data_source_ibm_pdr_last_operation_test.go +++ b/ibm/service/drautomationservice/data_source_ibm_pdr_last_operation_test.go @@ -54,7 +54,7 @@ func TestAccIBMPdrLastOperationDataSourceBasic(t *testing.T) { func testAccCheckIBMPdrLastOperationDataSourceConfigBasic() string { return fmt.Sprintf(` data "ibm_pdr_last_operation" "pdr_last_operation_instance" { - instance_id = "crn:v1:staging:public:power-dr-automation:global:a/b68c234e719144b18598ae4a7b80c44c:492fef47-3ebf-4090-b089-e9b4199878b6::" + instance_id = "123456d3-1122-3344-b67d-4389b44b7bf9" } `) } diff --git a/ibm/service/drautomationservice/dra-go-sdk/.secrets.baseline b/ibm/service/drautomationservice/dra-go-sdk/.secrets.baseline index a1e8138cb1..b2526fad35 100644 --- a/ibm/service/drautomationservice/dra-go-sdk/.secrets.baseline +++ b/ibm/service/drautomationservice/dra-go-sdk/.secrets.baseline @@ -3,7 +3,7 @@ "files": "go.sum|^.secrets.baseline$|.cra/.cveignore", "lines": null }, - "generated_at": "2025-10-25T06:42:38Z", + "generated_at": "2025-11-20T05:13:38Z", "plugins_used": [ { "name": "AWSKeyDetector" @@ -70,7 +70,7 @@ "hashed_secret": "78f0aa93871c89936d704d3b952120c56a54fa10", "is_secret": false, "is_verified": false, - "line_number": 22, + "line_number": 25, "type": "Hex High Entropy String", "verified_result": null }, @@ -78,7 +78,7 @@ "hashed_secret": "63fd038655cf061dee83085f8d902d1045300b36", "is_secret": false, "is_verified": false, - "line_number": 34, + "line_number": 37, "type": "Secret Keyword", "verified_result": null }, @@ -86,7 +86,7 @@ "hashed_secret": "3fa4fc540742cddaf407be3d5c1473cff0033e1e", "is_secret": false, "is_verified": false, - "line_number": 53, + "line_number": 56, "type": "Secret Keyword", "verified_result": null } @@ -136,7 +136,7 @@ "hashed_secret": "d3757d3106316a04a77f2958c69da829bc883d09", "is_secret": false, "is_verified": false, - "line_number": 1016, + "line_number": 1014, "type": "Secret Keyword", "verified_result": null }, @@ -144,7 +144,7 @@ "hashed_secret": "ba5bf2618937ee2bb431d7f6452bcb6657a3482d", "is_secret": false, "is_verified": false, - "line_number": 1022, + "line_number": 1020, "type": "Secret Keyword", "verified_result": null }, @@ -152,7 +152,7 @@ "hashed_secret": "4770fa23bfb6c07339814f001b1c0d6fb1dee2d0", "is_secret": false, "is_verified": false, - "line_number": 1043, + "line_number": 1041, "type": "Secret Keyword", "verified_result": null }, @@ -160,7 +160,7 @@ "hashed_secret": "8e766b88a3c9ca1cb944ba338737b5f69f1206b5", "is_secret": false, "is_verified": false, - "line_number": 1061, + "line_number": 1062, "type": "Secret Keyword", "verified_result": null }, @@ -168,7 +168,7 @@ "hashed_secret": "6452e7c5a42f97b00af1a210afc7d4de315e57ec", "is_secret": false, "is_verified": false, - "line_number": 3395, + "line_number": 3392, "type": "Secret Keyword", "verified_result": null } @@ -178,7 +178,7 @@ "hashed_secret": "811424347556b661512671f7a53aafa6aaf03ca2", "is_secret": false, "is_verified": false, - "line_number": 19, + "line_number": 22, "type": "Secret Keyword", "verified_result": null }, @@ -186,7 +186,7 @@ "hashed_secret": "ecb47e6f477780b52e724c150175f80956ef19bd", "is_secret": false, "is_verified": false, - "line_number": 389, + "line_number": 238, "type": "Base64 High Entropy String", "verified_result": null } @@ -204,17 +204,17 @@ "hashed_secret": "ecb47e6f477780b52e724c150175f80956ef19bd", "is_secret": false, "is_verified": false, - "line_number": 344, + "line_number": 343, "type": "Base64 High Entropy String", "verified_result": null } ], "drautomationservicev1/dr_automation_service_v1_integration_test.go": [ { - "hashed_secret": "2c153ebbe6cb5b68bcb51f1e2d1186e4cb54e028", + "hashed_secret": "43040ec446c955fc1235fb8283c87097f2498d50", "is_secret": false, "is_verified": false, - "line_number": 288, + "line_number": 287, "type": "Base64 High Entropy String", "verified_result": null } @@ -232,15 +232,15 @@ "hashed_secret": "55512dd2d5fb5ed9c570d011da4e63e087ab7862", "is_secret": false, "is_verified": false, - "line_number": 3751, + "line_number": 3743, "type": "Secret Keyword", "verified_result": null }, { - "hashed_secret": "2c153ebbe6cb5b68bcb51f1e2d1186e4cb54e028", + "hashed_secret": "43040ec446c955fc1235fb8283c87097f2498d50", "is_secret": false, "is_verified": false, - "line_number": 3807, + "line_number": 3797, "type": "Base64 High Entropy String", "verified_result": null }, @@ -248,7 +248,7 @@ "hashed_secret": "421586bc25f1b16dee534505adc9813acf3578bb", "is_secret": false, "is_verified": false, - "line_number": 4009, + "line_number": 3999, "type": "Secret Keyword", "verified_result": null }, @@ -256,7 +256,7 @@ "hashed_secret": "86f528ff713b453058af8e761eac1ab0be09646f", "is_secret": false, "is_verified": false, - "line_number": 4027, + "line_number": 4017, "type": "Base64 High Entropy String", "verified_result": null } diff --git a/ibm/service/drautomationservice/dra-go-sdk/common/headers.go b/ibm/service/drautomationservice/dra-go-sdk/common/headers.go index 6585b2cbfd..ee38051197 100644 --- a/ibm/service/drautomationservice/dra-go-sdk/common/headers.go +++ b/ibm/service/drautomationservice/dra-go-sdk/common/headers.go @@ -24,10 +24,11 @@ import ( ) const ( - sdkName = "demo-go-sdk" + sdkName = "demo-go-sdk" headerNameUserAgent = "User-Agent" ) +// // GetSdkHeaders - returns the set of SDK-specific headers to be included in an outgoing request. // // This function is invoked by generated service methods (i.e. methods which implement the REST API operations @@ -55,14 +56,13 @@ const ( // as the analytics data collector uses this to gather usage data. // // Parameters: -// -// serviceName - the name of the service as defined in the API definition (e.g. "MyService1") -// serviceVersion - the version of the service as defined in the API definition (e.g. "V1") -// operationId - the operationId as defined in the API definition (e.g. getContext) +// serviceName - the name of the service as defined in the API definition (e.g. "MyService1") +// serviceVersion - the version of the service as defined in the API definition (e.g. "V1") +// operationId - the operationId as defined in the API definition (e.g. getContext) // // Returns: +// a Map which contains the set of headers to be included in the REST API request // -// a Map which contains the set of headers to be included in the REST API request func GetSdkHeaders(serviceName string, serviceVersion string, operationId string) map[string]string { sdkHeaders := make(map[string]string) diff --git a/ibm/service/drautomationservice/dra-go-sdk/drautomationservicev1/dr_automation_service_v1.go b/ibm/service/drautomationservice/dra-go-sdk/drautomationservicev1/dr_automation_service_v1.go index 153d4b4c0c..90462cbe55 100644 --- a/ibm/service/drautomationservice/dra-go-sdk/drautomationservicev1/dr_automation_service_v1.go +++ b/ibm/service/drautomationservice/dra-go-sdk/drautomationservicev1/dr_automation_service_v1.go @@ -15,7 +15,7 @@ */ /* - * IBM OpenAPI SDK Code Generator Version: 3.105.0-3c13b041-20250605-193116 + * IBM OpenAPI SDK Code Generator Version: 3.108.0-56772134-20251111-102802 */ // Package drautomationservicev1 : Operations and models for the DrAutomationServiceV1 service @@ -43,7 +43,7 @@ type DrAutomationServiceV1 struct { } // DefaultServiceURL is the default URL to make service requests to. -const DefaultServiceURL = "https://powerdra-test.1lcv1smi8d9z.us-south.codeengine.appdomain.cloud" +const DefaultServiceURL = "https://power-dra.test.cloud.ibm.com" // DefaultServiceName is the default key used to find external configuration information. const DefaultServiceName = "dr_automation_service" @@ -205,21 +205,18 @@ func (drAutomationService *DrAutomationServiceV1) GetApikeyWithContext(ctx conte return } - for headerName, headerValue := range getApikeyOptions.Headers { + sdkHeaders := common.GetSdkHeaders("dr_automation_service", "V1", "GetApikey") + for headerName, headerValue := range sdkHeaders { builder.AddHeader(headerName, headerValue) } - sdkHeaders := common.GetSdkHeaders("dr_automation_service", "V1", "GetApikey") - for headerName, headerValue := range sdkHeaders { + for headerName, headerValue := range getApikeyOptions.Headers { builder.AddHeader(headerName, headerValue) } builder.AddHeader("Accept", "application/json") if getApikeyOptions.AcceptLanguage != nil { builder.AddHeader("Accept-Language", fmt.Sprint(*getApikeyOptions.AcceptLanguage)) } - if getApikeyOptions.IfNoneMatch != nil { - builder.AddHeader("If-None-Match", fmt.Sprint(*getApikeyOptions.IfNoneMatch)) - } request, err := builder.Build() if err != nil { @@ -280,12 +277,12 @@ func (drAutomationService *DrAutomationServiceV1) CreateApikeyWithContext(ctx co return } - for headerName, headerValue := range createApikeyOptions.Headers { + sdkHeaders := common.GetSdkHeaders("dr_automation_service", "V1", "CreateApikey") + for headerName, headerValue := range sdkHeaders { builder.AddHeader(headerName, headerValue) } - sdkHeaders := common.GetSdkHeaders("dr_automation_service", "V1", "CreateApikey") - for headerName, headerValue := range sdkHeaders { + for headerName, headerValue := range createApikeyOptions.Headers { builder.AddHeader(headerName, headerValue) } builder.AddHeader("Accept", "application/json") @@ -293,9 +290,6 @@ func (drAutomationService *DrAutomationServiceV1) CreateApikeyWithContext(ctx co if createApikeyOptions.AcceptLanguage != nil { builder.AddHeader("Accept-Language", fmt.Sprint(*createApikeyOptions.AcceptLanguage)) } - if createApikeyOptions.IfNoneMatch != nil { - builder.AddHeader("If-None-Match", fmt.Sprint(*createApikeyOptions.IfNoneMatch)) - } body := make(map[string]interface{}) if createApikeyOptions.APIKey != nil { @@ -366,12 +360,12 @@ func (drAutomationService *DrAutomationServiceV1) UpdateApikeyWithContext(ctx co return } - for headerName, headerValue := range updateApikeyOptions.Headers { + sdkHeaders := common.GetSdkHeaders("dr_automation_service", "V1", "UpdateApikey") + for headerName, headerValue := range sdkHeaders { builder.AddHeader(headerName, headerValue) } - sdkHeaders := common.GetSdkHeaders("dr_automation_service", "V1", "UpdateApikey") - for headerName, headerValue := range sdkHeaders { + for headerName, headerValue := range updateApikeyOptions.Headers { builder.AddHeader(headerName, headerValue) } builder.AddHeader("Accept", "application/json") @@ -379,9 +373,6 @@ func (drAutomationService *DrAutomationServiceV1) UpdateApikeyWithContext(ctx co if updateApikeyOptions.AcceptLanguage != nil { builder.AddHeader("Accept-Language", fmt.Sprint(*updateApikeyOptions.AcceptLanguage)) } - if updateApikeyOptions.IfNoneMatch != nil { - builder.AddHeader("If-None-Match", fmt.Sprint(*updateApikeyOptions.IfNoneMatch)) - } body := make(map[string]interface{}) if updateApikeyOptions.APIKey != nil { @@ -452,21 +443,18 @@ func (drAutomationService *DrAutomationServiceV1) GetDrGrsLocationPairWithContex return } - for headerName, headerValue := range getDrGrsLocationPairOptions.Headers { + sdkHeaders := common.GetSdkHeaders("dr_automation_service", "V1", "GetDrGrsLocationPair") + for headerName, headerValue := range sdkHeaders { builder.AddHeader(headerName, headerValue) } - sdkHeaders := common.GetSdkHeaders("dr_automation_service", "V1", "GetDrGrsLocationPair") - for headerName, headerValue := range sdkHeaders { + for headerName, headerValue := range getDrGrsLocationPairOptions.Headers { builder.AddHeader(headerName, headerValue) } builder.AddHeader("Accept", "application/json") if getDrGrsLocationPairOptions.AcceptLanguage != nil { builder.AddHeader("Accept-Language", fmt.Sprint(*getDrGrsLocationPairOptions.AcceptLanguage)) } - if getDrGrsLocationPairOptions.IfNoneMatch != nil { - builder.AddHeader("If-None-Match", fmt.Sprint(*getDrGrsLocationPairOptions.IfNoneMatch)) - } request, err := builder.Build() if err != nil { @@ -527,21 +515,18 @@ func (drAutomationService *DrAutomationServiceV1) GetDrLocationsWithContext(ctx return } - for headerName, headerValue := range getDrLocationsOptions.Headers { + sdkHeaders := common.GetSdkHeaders("dr_automation_service", "V1", "GetDrLocations") + for headerName, headerValue := range sdkHeaders { builder.AddHeader(headerName, headerValue) } - sdkHeaders := common.GetSdkHeaders("dr_automation_service", "V1", "GetDrLocations") - for headerName, headerValue := range sdkHeaders { + for headerName, headerValue := range getDrLocationsOptions.Headers { builder.AddHeader(headerName, headerValue) } builder.AddHeader("Accept", "application/json") if getDrLocationsOptions.AcceptLanguage != nil { builder.AddHeader("Accept-Language", fmt.Sprint(*getDrLocationsOptions.AcceptLanguage)) } - if getDrLocationsOptions.IfNoneMatch != nil { - builder.AddHeader("If-None-Match", fmt.Sprint(*getDrLocationsOptions.IfNoneMatch)) - } request, err := builder.Build() if err != nil { @@ -602,21 +587,18 @@ func (drAutomationService *DrAutomationServiceV1) GetDrManagedVMWithContext(ctx return } - for headerName, headerValue := range getDrManagedVMOptions.Headers { + sdkHeaders := common.GetSdkHeaders("dr_automation_service", "V1", "GetDrManagedVM") + for headerName, headerValue := range sdkHeaders { builder.AddHeader(headerName, headerValue) } - sdkHeaders := common.GetSdkHeaders("dr_automation_service", "V1", "GetDrManagedVM") - for headerName, headerValue := range sdkHeaders { + for headerName, headerValue := range getDrManagedVMOptions.Headers { builder.AddHeader(headerName, headerValue) } builder.AddHeader("Accept", "application/json") if getDrManagedVMOptions.AcceptLanguage != nil { builder.AddHeader("Accept-Language", fmt.Sprint(*getDrManagedVMOptions.AcceptLanguage)) } - if getDrManagedVMOptions.IfNoneMatch != nil { - builder.AddHeader("If-None-Match", fmt.Sprint(*getDrManagedVMOptions.IfNoneMatch)) - } request, err := builder.Build() if err != nil { @@ -678,21 +660,18 @@ func (drAutomationService *DrAutomationServiceV1) GetDrSummaryWithContext(ctx co return } - for headerName, headerValue := range getDrSummaryOptions.Headers { + sdkHeaders := common.GetSdkHeaders("dr_automation_service", "V1", "GetDrSummary") + for headerName, headerValue := range sdkHeaders { builder.AddHeader(headerName, headerValue) } - sdkHeaders := common.GetSdkHeaders("dr_automation_service", "V1", "GetDrSummary") - for headerName, headerValue := range sdkHeaders { + for headerName, headerValue := range getDrSummaryOptions.Headers { builder.AddHeader(headerName, headerValue) } builder.AddHeader("Accept", "application/json") if getDrSummaryOptions.AcceptLanguage != nil { builder.AddHeader("Accept-Language", fmt.Sprint(*getDrSummaryOptions.AcceptLanguage)) } - if getDrSummaryOptions.IfNoneMatch != nil { - builder.AddHeader("If-None-Match", fmt.Sprint(*getDrSummaryOptions.IfNoneMatch)) - } request, err := builder.Build() if err != nil { @@ -754,21 +733,18 @@ func (drAutomationService *DrAutomationServiceV1) GetMachineTypeWithContext(ctx return } - for headerName, headerValue := range getMachineTypeOptions.Headers { + sdkHeaders := common.GetSdkHeaders("dr_automation_service", "V1", "GetMachineType") + for headerName, headerValue := range sdkHeaders { builder.AddHeader(headerName, headerValue) } - sdkHeaders := common.GetSdkHeaders("dr_automation_service", "V1", "GetMachineType") - for headerName, headerValue := range sdkHeaders { + for headerName, headerValue := range getMachineTypeOptions.Headers { builder.AddHeader(headerName, headerValue) } builder.AddHeader("Accept", "application/json") if getMachineTypeOptions.AcceptLanguage != nil { builder.AddHeader("Accept-Language", fmt.Sprint(*getMachineTypeOptions.AcceptLanguage)) } - if getMachineTypeOptions.IfNoneMatch != nil { - builder.AddHeader("If-None-Match", fmt.Sprint(*getMachineTypeOptions.IfNoneMatch)) - } builder.AddQuery("primary_workspace_name", fmt.Sprint(*getMachineTypeOptions.PrimaryWorkspaceName)) if getMachineTypeOptions.StandbyWorkspaceName != nil { @@ -834,18 +810,15 @@ func (drAutomationService *DrAutomationServiceV1) GetPowervsWorkspacesWithContex return } - for headerName, headerValue := range getPowervsWorkspacesOptions.Headers { + sdkHeaders := common.GetSdkHeaders("dr_automation_service", "V1", "GetPowervsWorkspaces") + for headerName, headerValue := range sdkHeaders { builder.AddHeader(headerName, headerValue) } - sdkHeaders := common.GetSdkHeaders("dr_automation_service", "V1", "GetPowervsWorkspaces") - for headerName, headerValue := range sdkHeaders { + for headerName, headerValue := range getPowervsWorkspacesOptions.Headers { builder.AddHeader(headerName, headerValue) } builder.AddHeader("Accept", "application/json") - if getPowervsWorkspacesOptions.IfNoneMatch != nil { - builder.AddHeader("If-None-Match", fmt.Sprint(*getPowervsWorkspacesOptions.IfNoneMatch)) - } builder.AddQuery("location_id", fmt.Sprint(*getPowervsWorkspacesOptions.LocationID)) @@ -908,21 +881,18 @@ func (drAutomationService *DrAutomationServiceV1) GetManageDrWithContext(ctx con return } - for headerName, headerValue := range getManageDrOptions.Headers { + sdkHeaders := common.GetSdkHeaders("dr_automation_service", "V1", "GetManageDr") + for headerName, headerValue := range sdkHeaders { builder.AddHeader(headerName, headerValue) } - sdkHeaders := common.GetSdkHeaders("dr_automation_service", "V1", "GetManageDr") - for headerName, headerValue := range sdkHeaders { + for headerName, headerValue := range getManageDrOptions.Headers { builder.AddHeader(headerName, headerValue) } builder.AddHeader("Accept", "application/json") if getManageDrOptions.AcceptLanguage != nil { builder.AddHeader("Accept-Language", fmt.Sprint(*getManageDrOptions.AcceptLanguage)) } - if getManageDrOptions.IfNoneMatch != nil { - builder.AddHeader("If-None-Match", fmt.Sprint(*getManageDrOptions.IfNoneMatch)) - } request, err := builder.Build() if err != nil { @@ -950,8 +920,9 @@ func (drAutomationService *DrAutomationServiceV1) GetManageDrWithContext(ctx con } // CreateManageDr : Create DR Deployment -// Creates Orchestrator VM in the given workspace and configuration. Orchestrator VM can be used to manage multiple -// virtual servers and help ensure continuous availability. For more details, refer Deploying the Orchestrator - +// Creates DR Deployment by creating Orchestrator instance in the given PowerVS workspace and configuration. +// Orchestrator instance can be used to manage multiple virtual servers and ensure continuous availability. For more +// details, refer Deploying the Orchestrator - // https://cloud.ibm.com/docs/dr-automation-powervs?topic=dr-automation-powervs-idep-the-orch. func (drAutomationService *DrAutomationServiceV1) CreateManageDr(createManageDrOptions *CreateManageDrOptions) (result *ServiceInstanceManageDr, response *core.DetailedResponse, err error) { result, response, err = drAutomationService.CreateManageDrWithContext(context.Background(), createManageDrOptions) @@ -985,12 +956,12 @@ func (drAutomationService *DrAutomationServiceV1) CreateManageDrWithContext(ctx return } - for headerName, headerValue := range createManageDrOptions.Headers { + sdkHeaders := common.GetSdkHeaders("dr_automation_service", "V1", "CreateManageDr") + for headerName, headerValue := range sdkHeaders { builder.AddHeader(headerName, headerValue) } - sdkHeaders := common.GetSdkHeaders("dr_automation_service", "V1", "CreateManageDr") - for headerName, headerValue := range sdkHeaders { + for headerName, headerValue := range createManageDrOptions.Headers { builder.AddHeader(headerName, headerValue) } builder.AddHeader("Accept", "application/json") @@ -998,9 +969,6 @@ func (drAutomationService *DrAutomationServiceV1) CreateManageDrWithContext(ctx if createManageDrOptions.AcceptLanguage != nil { builder.AddHeader("Accept-Language", fmt.Sprint(*createManageDrOptions.AcceptLanguage)) } - if createManageDrOptions.IfNoneMatch != nil { - builder.AddHeader("If-None-Match", fmt.Sprint(*createManageDrOptions.IfNoneMatch)) - } if createManageDrOptions.StandByRedeploy != nil { builder.AddQuery("stand_by_redeploy", fmt.Sprint(*createManageDrOptions.StandByRedeploy)) @@ -1010,27 +978,12 @@ func (drAutomationService *DrAutomationServiceV1) CreateManageDrWithContext(ctx } body := make(map[string]interface{}) - if createManageDrOptions.APIKey != nil { - body["api_key"] = createManageDrOptions.APIKey - } - if createManageDrOptions.ClientID != nil { - body["client_id"] = createManageDrOptions.ClientID - } - if createManageDrOptions.ClientSecret != nil { - body["client_secret"] = createManageDrOptions.ClientSecret - } - if createManageDrOptions.GUID != nil { - body["guid"] = createManageDrOptions.GUID - } if createManageDrOptions.LocationID != nil { body["location_id"] = createManageDrOptions.LocationID } if createManageDrOptions.MachineType != nil { body["machine_type"] = createManageDrOptions.MachineType } - if createManageDrOptions.OrchestratorHa != nil { - body["orchestrator_ha"] = createManageDrOptions.OrchestratorHa - } if createManageDrOptions.OrchestratorLocationType != nil { body["orchestrator_location_type"] = createManageDrOptions.OrchestratorLocationType } @@ -1043,8 +996,20 @@ func (drAutomationService *DrAutomationServiceV1) CreateManageDrWithContext(ctx if createManageDrOptions.OrchestratorWorkspaceID != nil { body["orchestrator_workspace_id"] = createManageDrOptions.OrchestratorWorkspaceID } - if createManageDrOptions.OrchestratorWorkspaceLocation != nil { - body["orchestrator_workspace_location"] = createManageDrOptions.OrchestratorWorkspaceLocation + if createManageDrOptions.APIKey != nil { + body["api_key"] = createManageDrOptions.APIKey + } + if createManageDrOptions.ClientID != nil { + body["client_id"] = createManageDrOptions.ClientID + } + if createManageDrOptions.ClientSecret != nil { + body["client_secret"] = createManageDrOptions.ClientSecret + } + if createManageDrOptions.GUID != nil { + body["guid"] = createManageDrOptions.GUID + } + if createManageDrOptions.OrchestratorHa != nil { + body["orchestrator_ha"] = createManageDrOptions.OrchestratorHa } if createManageDrOptions.ProxyIP != nil { body["proxy_ip"] = createManageDrOptions.ProxyIP @@ -1055,9 +1020,6 @@ func (drAutomationService *DrAutomationServiceV1) CreateManageDrWithContext(ctx if createManageDrOptions.ResourceInstance != nil { body["resource_instance"] = createManageDrOptions.ResourceInstance } - if createManageDrOptions.SecondaryWorkspaceID != nil { - body["secondary_workspace_id"] = createManageDrOptions.SecondaryWorkspaceID - } if createManageDrOptions.Secret != nil { body["secret"] = createManageDrOptions.Secret } @@ -1076,9 +1038,6 @@ func (drAutomationService *DrAutomationServiceV1) CreateManageDrWithContext(ctx if createManageDrOptions.StandbyOrchestratorWorkspaceID != nil { body["standby_orchestrator_workspace_id"] = createManageDrOptions.StandbyOrchestratorWorkspaceID } - if createManageDrOptions.StandbyOrchestratorWorkspaceLocation != nil { - body["standby_orchestrator_workspace_location"] = createManageDrOptions.StandbyOrchestratorWorkspaceLocation - } if createManageDrOptions.StandbyTier != nil { body["standby_tier"] = createManageDrOptions.StandbyTier } @@ -1154,21 +1113,18 @@ func (drAutomationService *DrAutomationServiceV1) GetLastOperationWithContext(ct return } - for headerName, headerValue := range getLastOperationOptions.Headers { + sdkHeaders := common.GetSdkHeaders("dr_automation_service", "V1", "GetLastOperation") + for headerName, headerValue := range sdkHeaders { builder.AddHeader(headerName, headerValue) } - sdkHeaders := common.GetSdkHeaders("dr_automation_service", "V1", "GetLastOperation") - for headerName, headerValue := range sdkHeaders { + for headerName, headerValue := range getLastOperationOptions.Headers { builder.AddHeader(headerName, headerValue) } builder.AddHeader("Accept", "application/json") if getLastOperationOptions.AcceptLanguage != nil { builder.AddHeader("Accept-Language", fmt.Sprint(*getLastOperationOptions.AcceptLanguage)) } - if getLastOperationOptions.IfNoneMatch != nil { - builder.AddHeader("If-None-Match", fmt.Sprint(*getLastOperationOptions.IfNoneMatch)) - } request, err := builder.Build() if err != nil { @@ -1229,21 +1185,18 @@ func (drAutomationService *DrAutomationServiceV1) ListEventsWithContext(ctx cont return } - for headerName, headerValue := range listEventsOptions.Headers { + sdkHeaders := common.GetSdkHeaders("dr_automation_service", "V1", "ListEvents") + for headerName, headerValue := range sdkHeaders { builder.AddHeader(headerName, headerValue) } - sdkHeaders := common.GetSdkHeaders("dr_automation_service", "V1", "ListEvents") - for headerName, headerValue := range sdkHeaders { + for headerName, headerValue := range listEventsOptions.Headers { builder.AddHeader(headerName, headerValue) } builder.AddHeader("Accept", "application/json") if listEventsOptions.AcceptLanguage != nil { builder.AddHeader("Accept-Language", fmt.Sprint(*listEventsOptions.AcceptLanguage)) } - if listEventsOptions.IfNoneMatch != nil { - builder.AddHeader("If-None-Match", fmt.Sprint(*listEventsOptions.IfNoneMatch)) - } if listEventsOptions.Time != nil { builder.AddQuery("time", fmt.Sprint(*listEventsOptions.Time)) @@ -1303,7 +1256,7 @@ func (drAutomationService *DrAutomationServiceV1) GetEventWithContext(ctx contex pathParamsMap := map[string]string{ "instance_id": *getEventOptions.InstanceID, - "event_id": *getEventOptions.EventID, + "event_id": *getEventOptions.EventID, } builder := core.NewRequestBuilder(core.GET) @@ -1315,21 +1268,18 @@ func (drAutomationService *DrAutomationServiceV1) GetEventWithContext(ctx contex return } - for headerName, headerValue := range getEventOptions.Headers { + sdkHeaders := common.GetSdkHeaders("dr_automation_service", "V1", "GetEvent") + for headerName, headerValue := range sdkHeaders { builder.AddHeader(headerName, headerValue) } - sdkHeaders := common.GetSdkHeaders("dr_automation_service", "V1", "GetEvent") - for headerName, headerValue := range sdkHeaders { + for headerName, headerValue := range getEventOptions.Headers { builder.AddHeader(headerName, headerValue) } builder.AddHeader("Accept", "application/json") if getEventOptions.AcceptLanguage != nil { builder.AddHeader("Accept-Language", fmt.Sprint(*getEventOptions.AcceptLanguage)) } - if getEventOptions.IfNoneMatch != nil { - builder.AddHeader("If-None-Match", fmt.Sprint(*getEventOptions.IfNoneMatch)) - } request, err := builder.Build() if err != nil { @@ -1370,9 +1320,6 @@ type CreateApikeyOptions struct { // The language requested for the return document. AcceptLanguage *string `json:"Accept-Language,omitempty"` - // ETag for conditional requests (optional). - IfNoneMatch *string `json:"If-None-Match,omitempty"` - // Allows users to set headers on API requests. Headers map[string]string } @@ -1381,7 +1328,7 @@ type CreateApikeyOptions struct { func (*DrAutomationServiceV1) NewCreateApikeyOptions(instanceID string, apiKey string) *CreateApikeyOptions { return &CreateApikeyOptions{ InstanceID: core.StringPtr(instanceID), - APIKey: core.StringPtr(apiKey), + APIKey: core.StringPtr(apiKey), } } @@ -1403,12 +1350,6 @@ func (_options *CreateApikeyOptions) SetAcceptLanguage(acceptLanguage string) *C return _options } -// SetIfNoneMatch : Allow user to set IfNoneMatch -func (_options *CreateApikeyOptions) SetIfNoneMatch(ifNoneMatch string) *CreateApikeyOptions { - _options.IfNoneMatch = core.StringPtr(ifNoneMatch) - return _options -} - // SetHeaders : Allow user to set Headers func (options *CreateApikeyOptions) SetHeaders(param map[string]string) *CreateApikeyOptions { options.Headers = param @@ -1420,6 +1361,24 @@ type CreateManageDrOptions struct { // instance id of instance to provision. InstanceID *string `json:"instance_id" validate:"required,ne="` + // The location or data center identifier where the service instance is deployed. + LocationID *string `json:"location_id" validate:"required"` + + // The machine type used for deploying orchestrator. + MachineType *string `json:"machine_type" validate:"required"` + + // The cloud location where your orchestator need to be created. + OrchestratorLocationType *string `json:"orchestrator_location_type" validate:"required"` + + // The username used for the orchestrator. + OrchestratorName *string `json:"orchestrator_name" validate:"required"` + + // The password that you can use to access your orchestrator. + OrchestratorPassword *string `json:"orchestrator_password" validate:"required"` + + // The unique identifier orchestrator workspace. + OrchestratorWorkspaceID *string `json:"orchestrator_workspace_id" validate:"required"` + // The api Key of the service instance for deploying the disaster recovery service. APIKey *string `json:"api_key,omitempty"` @@ -1432,30 +1391,9 @@ type CreateManageDrOptions struct { // The global unique identifier of the service instance. GUID *string `json:"guid,omitempty"` - // The location or data center identifier where the service instance is deployed. - LocationID *string `json:"location_id,omitempty"` - - // The machine type used for deploying orchestrator. - MachineType *string `json:"machine_type,omitempty"` - // Indicates whether the orchestrator High Availability (HA) is enabled for the service instance. OrchestratorHa *bool `json:"orchestrator_ha,omitempty"` - // The cloud location where your orchestator need to be created. - OrchestratorLocationType *string `json:"orchestrator_location_type,omitempty"` - - // The username used for the orchestrator. - OrchestratorName *string `json:"orchestrator_name,omitempty"` - - // The password that you can use to access your orchestrator. - OrchestratorPassword *string `json:"orchestrator_password,omitempty"` - - // The unique identifier orchestrator workspace. - OrchestratorWorkspaceID *string `json:"orchestrator_workspace_id,omitempty"` - - // The location of the orchestrator workspace. - OrchestratorWorkspaceLocation *string `json:"orchestrator_workspace_location,omitempty"` - // Proxy IP for the Communication between Orchestrator and Service broker. ProxyIP *string `json:"proxy_ip,omitempty"` @@ -1465,9 +1403,6 @@ type CreateManageDrOptions struct { // The uniquie identifier of the associated IBM Cloud resource instance. ResourceInstance *string `json:"resource_instance,omitempty"` - // The unique identifier of the secondary workspace used for the disaster recovery. - SecondaryWorkspaceID *string `json:"secondary_workspace_id,omitempty"` - // The secret name or identifier used for retrieving credentials from secrets manager. Secret *string `json:"secret,omitempty"` @@ -1486,9 +1421,6 @@ type CreateManageDrOptions struct { // The unique identifier of the standby orchestrator workspace. StandbyOrchestratorWorkspaceID *string `json:"standby_orchestrator_workspace_id,omitempty"` - // The location of the standby orchestrator workspace. - StandbyOrchestratorWorkspaceLocation *string `json:"standby_orchestrator_workspace_location,omitempty"` - // The storage tier used for deploying standby orchestrator. StandbyTier *string `json:"standby_tier,omitempty"` @@ -1504,9 +1436,6 @@ type CreateManageDrOptions struct { // The language requested for the return document. AcceptLanguage *string `json:"Accept-Language,omitempty"` - // ETag for conditional requests (optional). - IfNoneMatch *string `json:"If-None-Match,omitempty"` - // A value of true indicates that both the IBM Cloud platform and the requesting client support asynchronous // deprovisioning. AcceptsIncomplete *bool `json:"accepts_incomplete,omitempty"` @@ -1516,9 +1445,15 @@ type CreateManageDrOptions struct { } // NewCreateManageDrOptions : Instantiate CreateManageDrOptions -func (*DrAutomationServiceV1) NewCreateManageDrOptions(instanceID string) *CreateManageDrOptions { +func (*DrAutomationServiceV1) NewCreateManageDrOptions(instanceID string, locationID string, machineType string, orchestratorLocationType string, orchestratorName string, orchestratorPassword string, orchestratorWorkspaceID string) *CreateManageDrOptions { return &CreateManageDrOptions{ InstanceID: core.StringPtr(instanceID), + LocationID: core.StringPtr(locationID), + MachineType: core.StringPtr(machineType), + OrchestratorLocationType: core.StringPtr(orchestratorLocationType), + OrchestratorName: core.StringPtr(orchestratorName), + OrchestratorPassword: core.StringPtr(orchestratorPassword), + OrchestratorWorkspaceID: core.StringPtr(orchestratorWorkspaceID), } } @@ -1528,30 +1463,6 @@ func (_options *CreateManageDrOptions) SetInstanceID(instanceID string) *CreateM return _options } -// SetAPIKey : Allow user to set APIKey -func (_options *CreateManageDrOptions) SetAPIKey(apiKey string) *CreateManageDrOptions { - _options.APIKey = core.StringPtr(apiKey) - return _options -} - -// SetClientID : Allow user to set ClientID -func (_options *CreateManageDrOptions) SetClientID(clientID string) *CreateManageDrOptions { - _options.ClientID = core.StringPtr(clientID) - return _options -} - -// SetClientSecret : Allow user to set ClientSecret -func (_options *CreateManageDrOptions) SetClientSecret(clientSecret string) *CreateManageDrOptions { - _options.ClientSecret = core.StringPtr(clientSecret) - return _options -} - -// SetGUID : Allow user to set GUID -func (_options *CreateManageDrOptions) SetGUID(guid string) *CreateManageDrOptions { - _options.GUID = core.StringPtr(guid) - return _options -} - // SetLocationID : Allow user to set LocationID func (_options *CreateManageDrOptions) SetLocationID(locationID string) *CreateManageDrOptions { _options.LocationID = core.StringPtr(locationID) @@ -1564,12 +1475,6 @@ func (_options *CreateManageDrOptions) SetMachineType(machineType string) *Creat return _options } -// SetOrchestratorHa : Allow user to set OrchestratorHa -func (_options *CreateManageDrOptions) SetOrchestratorHa(orchestratorHa bool) *CreateManageDrOptions { - _options.OrchestratorHa = core.BoolPtr(orchestratorHa) - return _options -} - // SetOrchestratorLocationType : Allow user to set OrchestratorLocationType func (_options *CreateManageDrOptions) SetOrchestratorLocationType(orchestratorLocationType string) *CreateManageDrOptions { _options.OrchestratorLocationType = core.StringPtr(orchestratorLocationType) @@ -1594,9 +1499,33 @@ func (_options *CreateManageDrOptions) SetOrchestratorWorkspaceID(orchestratorWo return _options } -// SetOrchestratorWorkspaceLocation : Allow user to set OrchestratorWorkspaceLocation -func (_options *CreateManageDrOptions) SetOrchestratorWorkspaceLocation(orchestratorWorkspaceLocation string) *CreateManageDrOptions { - _options.OrchestratorWorkspaceLocation = core.StringPtr(orchestratorWorkspaceLocation) +// SetAPIKey : Allow user to set APIKey +func (_options *CreateManageDrOptions) SetAPIKey(apiKey string) *CreateManageDrOptions { + _options.APIKey = core.StringPtr(apiKey) + return _options +} + +// SetClientID : Allow user to set ClientID +func (_options *CreateManageDrOptions) SetClientID(clientID string) *CreateManageDrOptions { + _options.ClientID = core.StringPtr(clientID) + return _options +} + +// SetClientSecret : Allow user to set ClientSecret +func (_options *CreateManageDrOptions) SetClientSecret(clientSecret string) *CreateManageDrOptions { + _options.ClientSecret = core.StringPtr(clientSecret) + return _options +} + +// SetGUID : Allow user to set GUID +func (_options *CreateManageDrOptions) SetGUID(guid string) *CreateManageDrOptions { + _options.GUID = core.StringPtr(guid) + return _options +} + +// SetOrchestratorHa : Allow user to set OrchestratorHa +func (_options *CreateManageDrOptions) SetOrchestratorHa(orchestratorHa bool) *CreateManageDrOptions { + _options.OrchestratorHa = core.BoolPtr(orchestratorHa) return _options } @@ -1618,12 +1547,6 @@ func (_options *CreateManageDrOptions) SetResourceInstance(resourceInstance stri return _options } -// SetSecondaryWorkspaceID : Allow user to set SecondaryWorkspaceID -func (_options *CreateManageDrOptions) SetSecondaryWorkspaceID(secondaryWorkspaceID string) *CreateManageDrOptions { - _options.SecondaryWorkspaceID = core.StringPtr(secondaryWorkspaceID) - return _options -} - // SetSecret : Allow user to set Secret func (_options *CreateManageDrOptions) SetSecret(secret string) *CreateManageDrOptions { _options.Secret = core.StringPtr(secret) @@ -1660,12 +1583,6 @@ func (_options *CreateManageDrOptions) SetStandbyOrchestratorWorkspaceID(standby return _options } -// SetStandbyOrchestratorWorkspaceLocation : Allow user to set StandbyOrchestratorWorkspaceLocation -func (_options *CreateManageDrOptions) SetStandbyOrchestratorWorkspaceLocation(standbyOrchestratorWorkspaceLocation string) *CreateManageDrOptions { - _options.StandbyOrchestratorWorkspaceLocation = core.StringPtr(standbyOrchestratorWorkspaceLocation) - return _options -} - // SetStandbyTier : Allow user to set StandbyTier func (_options *CreateManageDrOptions) SetStandbyTier(standbyTier string) *CreateManageDrOptions { _options.StandbyTier = core.StringPtr(standbyTier) @@ -1696,12 +1613,6 @@ func (_options *CreateManageDrOptions) SetAcceptLanguage(acceptLanguage string) return _options } -// SetIfNoneMatch : Allow user to set IfNoneMatch -func (_options *CreateManageDrOptions) SetIfNoneMatch(ifNoneMatch string) *CreateManageDrOptions { - _options.IfNoneMatch = core.StringPtr(ifNoneMatch) - return _options -} - // SetAcceptsIncomplete : Allow user to set AcceptsIncomplete func (_options *CreateManageDrOptions) SetAcceptsIncomplete(acceptsIncomplete bool) *CreateManageDrOptions { _options.AcceptsIncomplete = core.BoolPtr(acceptsIncomplete) @@ -1981,9 +1892,9 @@ type Event struct { // Constants associated with the Event.Level property. // Level of the event (notice, info, warning, error). const ( - EventLevelErrorConst = "error" - EventLevelInfoConst = "info" - EventLevelNoticeConst = "notice" + EventLevelErrorConst = "error" + EventLevelInfoConst = "info" + EventLevelNoticeConst = "notice" EventLevelWarningConst = "warning" ) @@ -2109,9 +2020,6 @@ type GetApikeyOptions struct { // The language requested for the return document. AcceptLanguage *string `json:"Accept-Language,omitempty"` - // ETag for conditional requests (optional). - IfNoneMatch *string `json:"If-None-Match,omitempty"` - // Allows users to set headers on API requests. Headers map[string]string } @@ -2135,12 +2043,6 @@ func (_options *GetApikeyOptions) SetAcceptLanguage(acceptLanguage string) *GetA return _options } -// SetIfNoneMatch : Allow user to set IfNoneMatch -func (_options *GetApikeyOptions) SetIfNoneMatch(ifNoneMatch string) *GetApikeyOptions { - _options.IfNoneMatch = core.StringPtr(ifNoneMatch) - return _options -} - // SetHeaders : Allow user to set Headers func (options *GetApikeyOptions) SetHeaders(param map[string]string) *GetApikeyOptions { options.Headers = param @@ -2155,9 +2057,6 @@ type GetDrGrsLocationPairOptions struct { // The language requested for the return document. AcceptLanguage *string `json:"Accept-Language,omitempty"` - // ETag for conditional requests (optional). - IfNoneMatch *string `json:"If-None-Match,omitempty"` - // Allows users to set headers on API requests. Headers map[string]string } @@ -2181,12 +2080,6 @@ func (_options *GetDrGrsLocationPairOptions) SetAcceptLanguage(acceptLanguage st return _options } -// SetIfNoneMatch : Allow user to set IfNoneMatch -func (_options *GetDrGrsLocationPairOptions) SetIfNoneMatch(ifNoneMatch string) *GetDrGrsLocationPairOptions { - _options.IfNoneMatch = core.StringPtr(ifNoneMatch) - return _options -} - // SetHeaders : Allow user to set Headers func (options *GetDrGrsLocationPairOptions) SetHeaders(param map[string]string) *GetDrGrsLocationPairOptions { options.Headers = param @@ -2201,9 +2094,6 @@ type GetDrLocationsOptions struct { // The language requested for the return document. AcceptLanguage *string `json:"Accept-Language,omitempty"` - // ETag for conditional requests (optional). - IfNoneMatch *string `json:"If-None-Match,omitempty"` - // Allows users to set headers on API requests. Headers map[string]string } @@ -2227,12 +2117,6 @@ func (_options *GetDrLocationsOptions) SetAcceptLanguage(acceptLanguage string) return _options } -// SetIfNoneMatch : Allow user to set IfNoneMatch -func (_options *GetDrLocationsOptions) SetIfNoneMatch(ifNoneMatch string) *GetDrLocationsOptions { - _options.IfNoneMatch = core.StringPtr(ifNoneMatch) - return _options -} - // SetHeaders : Allow user to set Headers func (options *GetDrLocationsOptions) SetHeaders(param map[string]string) *GetDrLocationsOptions { options.Headers = param @@ -2265,9 +2149,6 @@ type GetDrManagedVMOptions struct { // The language requested for the return document. AcceptLanguage *string `json:"Accept-Language,omitempty"` - // ETag for conditional requests (optional). - IfNoneMatch *string `json:"If-None-Match,omitempty"` - // Allows users to set headers on API requests. Headers map[string]string } @@ -2291,12 +2172,6 @@ func (_options *GetDrManagedVMOptions) SetAcceptLanguage(acceptLanguage string) return _options } -// SetIfNoneMatch : Allow user to set IfNoneMatch -func (_options *GetDrManagedVMOptions) SetIfNoneMatch(ifNoneMatch string) *GetDrManagedVMOptions { - _options.IfNoneMatch = core.StringPtr(ifNoneMatch) - return _options -} - // SetHeaders : Allow user to set Headers func (options *GetDrManagedVMOptions) SetHeaders(param map[string]string) *GetDrManagedVMOptions { options.Headers = param @@ -2311,9 +2186,6 @@ type GetDrSummaryOptions struct { // The language requested for the return document. AcceptLanguage *string `json:"Accept-Language,omitempty"` - // ETag for conditional requests (optional). - IfNoneMatch *string `json:"If-None-Match,omitempty"` - // Allows users to set headers on API requests. Headers map[string]string } @@ -2337,12 +2209,6 @@ func (_options *GetDrSummaryOptions) SetAcceptLanguage(acceptLanguage string) *G return _options } -// SetIfNoneMatch : Allow user to set IfNoneMatch -func (_options *GetDrSummaryOptions) SetIfNoneMatch(ifNoneMatch string) *GetDrSummaryOptions { - _options.IfNoneMatch = core.StringPtr(ifNoneMatch) - return _options -} - // SetHeaders : Allow user to set Headers func (options *GetDrSummaryOptions) SetHeaders(param map[string]string) *GetDrSummaryOptions { options.Headers = param @@ -2360,9 +2226,6 @@ type GetEventOptions struct { // The language requested for the return document. AcceptLanguage *string `json:"Accept-Language,omitempty"` - // ETag for conditional requests (optional). - IfNoneMatch *string `json:"If-None-Match,omitempty"` - // Allows users to set headers on API requests. Headers map[string]string } @@ -2371,7 +2234,7 @@ type GetEventOptions struct { func (*DrAutomationServiceV1) NewGetEventOptions(instanceID string, eventID string) *GetEventOptions { return &GetEventOptions{ InstanceID: core.StringPtr(instanceID), - EventID: core.StringPtr(eventID), + EventID: core.StringPtr(eventID), } } @@ -2393,12 +2256,6 @@ func (_options *GetEventOptions) SetAcceptLanguage(acceptLanguage string) *GetEv return _options } -// SetIfNoneMatch : Allow user to set IfNoneMatch -func (_options *GetEventOptions) SetIfNoneMatch(ifNoneMatch string) *GetEventOptions { - _options.IfNoneMatch = core.StringPtr(ifNoneMatch) - return _options -} - // SetHeaders : Allow user to set Headers func (options *GetEventOptions) SetHeaders(param map[string]string) *GetEventOptions { options.Headers = param @@ -2431,9 +2288,6 @@ type GetLastOperationOptions struct { // The language requested for the return document. AcceptLanguage *string `json:"Accept-Language,omitempty"` - // ETag for conditional requests (optional). - IfNoneMatch *string `json:"If-None-Match,omitempty"` - // Allows users to set headers on API requests. Headers map[string]string } @@ -2457,12 +2311,6 @@ func (_options *GetLastOperationOptions) SetAcceptLanguage(acceptLanguage string return _options } -// SetIfNoneMatch : Allow user to set IfNoneMatch -func (_options *GetLastOperationOptions) SetIfNoneMatch(ifNoneMatch string) *GetLastOperationOptions { - _options.IfNoneMatch = core.StringPtr(ifNoneMatch) - return _options -} - // SetHeaders : Allow user to set Headers func (options *GetLastOperationOptions) SetHeaders(param map[string]string) *GetLastOperationOptions { options.Headers = param @@ -2480,9 +2328,6 @@ type GetMachineTypeOptions struct { // The language requested for the return document. AcceptLanguage *string `json:"Accept-Language,omitempty"` - // ETag for conditional requests (optional). - IfNoneMatch *string `json:"If-None-Match,omitempty"` - // The standby Power virtual server workspace name. StandbyWorkspaceName *string `json:"standby_workspace_name,omitempty"` @@ -2493,7 +2338,7 @@ type GetMachineTypeOptions struct { // NewGetMachineTypeOptions : Instantiate GetMachineTypeOptions func (*DrAutomationServiceV1) NewGetMachineTypeOptions(instanceID string, primaryWorkspaceName string) *GetMachineTypeOptions { return &GetMachineTypeOptions{ - InstanceID: core.StringPtr(instanceID), + InstanceID: core.StringPtr(instanceID), PrimaryWorkspaceName: core.StringPtr(primaryWorkspaceName), } } @@ -2516,12 +2361,6 @@ func (_options *GetMachineTypeOptions) SetAcceptLanguage(acceptLanguage string) return _options } -// SetIfNoneMatch : Allow user to set IfNoneMatch -func (_options *GetMachineTypeOptions) SetIfNoneMatch(ifNoneMatch string) *GetMachineTypeOptions { - _options.IfNoneMatch = core.StringPtr(ifNoneMatch) - return _options -} - // SetStandbyWorkspaceName : Allow user to set StandbyWorkspaceName func (_options *GetMachineTypeOptions) SetStandbyWorkspaceName(standbyWorkspaceName string) *GetMachineTypeOptions { _options.StandbyWorkspaceName = core.StringPtr(standbyWorkspaceName) @@ -2542,9 +2381,6 @@ type GetManageDrOptions struct { // The language requested for the return document. AcceptLanguage *string `json:"Accept-Language,omitempty"` - // ETag for conditional requests (optional). - IfNoneMatch *string `json:"If-None-Match,omitempty"` - // Allows users to set headers on API requests. Headers map[string]string } @@ -2568,12 +2404,6 @@ func (_options *GetManageDrOptions) SetAcceptLanguage(acceptLanguage string) *Ge return _options } -// SetIfNoneMatch : Allow user to set IfNoneMatch -func (_options *GetManageDrOptions) SetIfNoneMatch(ifNoneMatch string) *GetManageDrOptions { - _options.IfNoneMatch = core.StringPtr(ifNoneMatch) - return _options -} - // SetHeaders : Allow user to set Headers func (options *GetManageDrOptions) SetHeaders(param map[string]string) *GetManageDrOptions { options.Headers = param @@ -2588,9 +2418,6 @@ type GetPowervsWorkspacesOptions struct { // Location ID value. LocationID *string `json:"location_id" validate:"required"` - // ETag for conditional requests (optional). - IfNoneMatch *string `json:"If-None-Match,omitempty"` - // Allows users to set headers on API requests. Headers map[string]string } @@ -2615,12 +2442,6 @@ func (_options *GetPowervsWorkspacesOptions) SetLocationID(locationID string) *G return _options } -// SetIfNoneMatch : Allow user to set IfNoneMatch -func (_options *GetPowervsWorkspacesOptions) SetIfNoneMatch(ifNoneMatch string) *GetPowervsWorkspacesOptions { - _options.IfNoneMatch = core.StringPtr(ifNoneMatch) - return _options -} - // SetHeaders : Allow user to set Headers func (options *GetPowervsWorkspacesOptions) SetHeaders(param map[string]string) *GetPowervsWorkspacesOptions { options.Headers = param @@ -2644,9 +2465,6 @@ type ListEventsOptions struct { // The language requested for the return document. AcceptLanguage *string `json:"Accept-Language,omitempty"` - // ETag for conditional requests (optional). - IfNoneMatch *string `json:"If-None-Match,omitempty"` - // Allows users to set headers on API requests. Headers map[string]string } @@ -2688,12 +2506,6 @@ func (_options *ListEventsOptions) SetAcceptLanguage(acceptLanguage string) *Lis return _options } -// SetIfNoneMatch : Allow user to set IfNoneMatch -func (_options *ListEventsOptions) SetIfNoneMatch(ifNoneMatch string) *ListEventsOptions { - _options.IfNoneMatch = core.StringPtr(ifNoneMatch) - return _options -} - // SetHeaders : Allow user to set Headers func (options *ListEventsOptions) SetHeaders(param map[string]string) *ListEventsOptions { options.Headers = param @@ -3368,9 +3180,6 @@ type UpdateApikeyOptions struct { // The language requested for the return document. AcceptLanguage *string `json:"Accept-Language,omitempty"` - // ETag for conditional requests (optional). - IfNoneMatch *string `json:"If-None-Match,omitempty"` - // Allows users to set headers on API requests. Headers map[string]string } @@ -3379,7 +3188,7 @@ type UpdateApikeyOptions struct { func (*DrAutomationServiceV1) NewUpdateApikeyOptions(instanceID string, apiKey string) *UpdateApikeyOptions { return &UpdateApikeyOptions{ InstanceID: core.StringPtr(instanceID), - APIKey: core.StringPtr(apiKey), + APIKey: core.StringPtr(apiKey), } } @@ -3401,12 +3210,6 @@ func (_options *UpdateApikeyOptions) SetAcceptLanguage(acceptLanguage string) *U return _options } -// SetIfNoneMatch : Allow user to set IfNoneMatch -func (_options *UpdateApikeyOptions) SetIfNoneMatch(ifNoneMatch string) *UpdateApikeyOptions { - _options.IfNoneMatch = core.StringPtr(ifNoneMatch) - return _options -} - // SetHeaders : Allow user to set Headers func (options *UpdateApikeyOptions) SetHeaders(param map[string]string) *UpdateApikeyOptions { options.Headers = param diff --git a/ibm/service/drautomationservice/dra-go-sdk/drautomationservicev1/dr_automation_service_v1_examples_test.go b/ibm/service/drautomationservice/dra-go-sdk/drautomationservicev1/dr_automation_service_v1_examples_test.go index 9398ff5c8c..f494e310e6 100644 --- a/ibm/service/drautomationservice/dra-go-sdk/drautomationservicev1/dr_automation_service_v1_examples_test.go +++ b/ibm/service/drautomationservice/dra-go-sdk/drautomationservicev1/dr_automation_service_v1_examples_test.go @@ -105,7 +105,7 @@ var _ = Describe(`DrAutomationServiceV1 Examples Tests`, func() { // begin-get_apikey getApikeyOptions := drAutomationServiceService.NewGetApikeyOptions( - "crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::", + "123456d3-1122-3344-b67d-4389b44b7bf9", ) validationKeyResponse, response, err := drAutomationServiceService.GetApikey(getApikeyOptions) @@ -126,7 +126,7 @@ var _ = Describe(`DrAutomationServiceV1 Examples Tests`, func() { // begin-create_apikey createApikeyOptions := drAutomationServiceService.NewCreateApikeyOptions( - "crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::", + "123456d3-1122-3344-b67d-4389b44b7bf9", "abcdefrg_izklmnop_fxbEED", ) @@ -148,7 +148,7 @@ var _ = Describe(`DrAutomationServiceV1 Examples Tests`, func() { // begin-update_apikey updateApikeyOptions := drAutomationServiceService.NewUpdateApikeyOptions( - "crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::", + "123456d3-1122-3344-b67d-4389b44b7bf9", "adfadfdsafsdfdsf", ) @@ -170,7 +170,7 @@ var _ = Describe(`DrAutomationServiceV1 Examples Tests`, func() { // begin-get_dr_grs_location_pair getDrGrsLocationPairOptions := drAutomationServiceService.NewGetDrGrsLocationPairOptions( - "crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::", + "123456d3-1122-3344-b67d-4389b44b7bf9", ) getGrsLocationPairResponse, response, err := drAutomationServiceService.GetDrGrsLocationPair(getDrGrsLocationPairOptions) @@ -191,7 +191,7 @@ var _ = Describe(`DrAutomationServiceV1 Examples Tests`, func() { // begin-get_dr_locations getDrLocationsOptions := drAutomationServiceService.NewGetDrLocationsOptions( - "crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::", + "123456d3-1122-3344-b67d-4389b44b7bf9", ) getDrLocationsResponse, response, err := drAutomationServiceService.GetDrLocations(getDrLocationsOptions) @@ -212,7 +212,7 @@ var _ = Describe(`DrAutomationServiceV1 Examples Tests`, func() { // begin-get_dr_managed_vm getDrManagedVMOptions := drAutomationServiceService.NewGetDrManagedVMOptions( - "crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::", + "123456d3-1122-3344-b67d-4389b44b7bf9", ) managedVMMapResponse, response, err := drAutomationServiceService.GetDrManagedVM(getDrManagedVMOptions) @@ -233,7 +233,7 @@ var _ = Describe(`DrAutomationServiceV1 Examples Tests`, func() { // begin-get_dr_summary getDrSummaryOptions := drAutomationServiceService.NewGetDrSummaryOptions( - "crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::", + "123456d3-1122-3344-b67d-4389b44b7bf9", ) drAutomationGetSummaryResponse, response, err := drAutomationServiceService.GetDrSummary(getDrSummaryOptions) @@ -254,7 +254,7 @@ var _ = Describe(`DrAutomationServiceV1 Examples Tests`, func() { // begin-get_machine_type getMachineTypeOptions := drAutomationServiceService.NewGetMachineTypeOptions( - "crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::", + "123456d3-1122-3344-b67d-4389b44b7bf9", "Test-workspace-wdc06", ) getMachineTypeOptions.SetStandbyWorkspaceName("Test-workspace-wdc07") @@ -277,7 +277,7 @@ var _ = Describe(`DrAutomationServiceV1 Examples Tests`, func() { // begin-get_powervs_workspaces getPowervsWorkspacesOptions := drAutomationServiceService.NewGetPowervsWorkspacesOptions( - "crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::", + "123456d3-1122-3344-b67d-4389b44b7bf9", "testString", ) @@ -299,7 +299,7 @@ var _ = Describe(`DrAutomationServiceV1 Examples Tests`, func() { // begin-get_manage_dr getManageDrOptions := drAutomationServiceService.NewGetManageDrOptions( - "crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::", + "123456d3-1122-3344-b67d-4389b44b7bf9", ) serviceInstanceManageDr, response, err := drAutomationServiceService.GetManageDr(getManageDrOptions) @@ -320,7 +320,7 @@ var _ = Describe(`DrAutomationServiceV1 Examples Tests`, func() { // begin-create_manage_dr createManageDrOptions := drAutomationServiceService.NewCreateManageDrOptions( - "crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::", + "123456d3-1122-3344-b67d-4389b44b7bf9", ) createManageDrOptions.SetOrchestratorHa(true) createManageDrOptions.SetOrchestratorLocationType("off-premises") @@ -361,7 +361,7 @@ var _ = Describe(`DrAutomationServiceV1 Examples Tests`, func() { // begin-get_last_operation getLastOperationOptions := drAutomationServiceService.NewGetLastOperationOptions( - "crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::", + "123456d3-1122-3344-b67d-4389b44b7bf9", ) serviceInstanceStatus, response, err := drAutomationServiceService.GetLastOperation(getLastOperationOptions) @@ -382,7 +382,7 @@ var _ = Describe(`DrAutomationServiceV1 Examples Tests`, func() { // begin-list_events listEventsOptions := drAutomationServiceService.NewListEventsOptions( - "crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::", + "123456d3-1122-3344-b67d-4389b44b7bf9", ) listEventsOptions.SetTime("2025-06-19T23:59:59Z") listEventsOptions.SetFromTime("2025-06-19T00:00:00Z") @@ -406,7 +406,7 @@ var _ = Describe(`DrAutomationServiceV1 Examples Tests`, func() { // begin-get_event getEventOptions := drAutomationServiceService.NewGetEventOptions( - "crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::", + "123456d3-1122-3344-b67d-4389b44b7bf9", "00116b2a-9326-4024-839e-fb5364b76898", ) diff --git a/ibm/service/drautomationservice/dra-go-sdk/drautomationservicev1/dr_automation_service_v1_integration_test.go b/ibm/service/drautomationservice/dra-go-sdk/drautomationservicev1/dr_automation_service_v1_integration_test.go index 357495d7dc..fe66e72c98 100644 --- a/ibm/service/drautomationservice/dra-go-sdk/drautomationservicev1/dr_automation_service_v1_integration_test.go +++ b/ibm/service/drautomationservice/dra-go-sdk/drautomationservicev1/dr_automation_service_v1_integration_test.go @@ -42,10 +42,10 @@ var _ = Describe(`DrAutomationServiceV1 Integration Tests`, func() { const externalConfigFile = "../dr_automation_service_v1.env" var ( - err error + err error drAutomationServiceService *drautomationservicev1.DrAutomationServiceV1 - serviceURL string - config map[string]string + serviceURL string + config map[string]string ) var shouldSkipTest = func() { @@ -97,9 +97,8 @@ var _ = Describe(`DrAutomationServiceV1 Integration Tests`, func() { }) It(`GetApikey(getApikeyOptions *GetApikeyOptions)`, func() { getApikeyOptions := &drautomationservicev1.GetApikeyOptions{ - InstanceID: core.StringPtr("crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::"), + InstanceID: core.StringPtr("123456d3-1122-3344-b67d-4389b44b7bf9"), AcceptLanguage: core.StringPtr("testString"), - IfNoneMatch: core.StringPtr("testString"), } validationKeyResponse, response, err := drAutomationServiceService.GetApikey(getApikeyOptions) @@ -115,10 +114,9 @@ var _ = Describe(`DrAutomationServiceV1 Integration Tests`, func() { }) It(`CreateApikey(createApikeyOptions *CreateApikeyOptions)`, func() { createApikeyOptions := &drautomationservicev1.CreateApikeyOptions{ - InstanceID: core.StringPtr("crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::"), - APIKey: core.StringPtr("abcdefrg_izklmnop_fxbEED"), + InstanceID: core.StringPtr("123456d3-1122-3344-b67d-4389b44b7bf9"), + APIKey: core.StringPtr("abcdefrg_izklmnop_fxbEED"), AcceptLanguage: core.StringPtr("testString"), - IfNoneMatch: core.StringPtr("testString"), } validationKeyResponse, response, err := drAutomationServiceService.CreateApikey(createApikeyOptions) @@ -134,10 +132,9 @@ var _ = Describe(`DrAutomationServiceV1 Integration Tests`, func() { }) It(`UpdateApikey(updateApikeyOptions *UpdateApikeyOptions)`, func() { updateApikeyOptions := &drautomationservicev1.UpdateApikeyOptions{ - InstanceID: core.StringPtr("crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::"), - APIKey: core.StringPtr("adfadfdsafsdfdsf"), + InstanceID: core.StringPtr("123456d3-1122-3344-b67d-4389b44b7bf9"), + APIKey: core.StringPtr("adfadfdsafsdfdsf"), AcceptLanguage: core.StringPtr("testString"), - IfNoneMatch: core.StringPtr("testString"), } validationKeyResponse, response, err := drAutomationServiceService.UpdateApikey(updateApikeyOptions) @@ -153,9 +150,8 @@ var _ = Describe(`DrAutomationServiceV1 Integration Tests`, func() { }) It(`GetDrGrsLocationPair(getDrGrsLocationPairOptions *GetDrGrsLocationPairOptions)`, func() { getDrGrsLocationPairOptions := &drautomationservicev1.GetDrGrsLocationPairOptions{ - InstanceID: core.StringPtr("crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::"), + InstanceID: core.StringPtr("123456d3-1122-3344-b67d-4389b44b7bf9"), AcceptLanguage: core.StringPtr("testString"), - IfNoneMatch: core.StringPtr("testString"), } getGrsLocationPairResponse, response, err := drAutomationServiceService.GetDrGrsLocationPair(getDrGrsLocationPairOptions) @@ -171,9 +167,8 @@ var _ = Describe(`DrAutomationServiceV1 Integration Tests`, func() { }) It(`GetDrLocations(getDrLocationsOptions *GetDrLocationsOptions)`, func() { getDrLocationsOptions := &drautomationservicev1.GetDrLocationsOptions{ - InstanceID: core.StringPtr("crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::"), + InstanceID: core.StringPtr("123456d3-1122-3344-b67d-4389b44b7bf9"), AcceptLanguage: core.StringPtr("testString"), - IfNoneMatch: core.StringPtr("testString"), } getDrLocationsResponse, response, err := drAutomationServiceService.GetDrLocations(getDrLocationsOptions) @@ -189,9 +184,8 @@ var _ = Describe(`DrAutomationServiceV1 Integration Tests`, func() { }) It(`GetDrManagedVM(getDrManagedVMOptions *GetDrManagedVMOptions)`, func() { getDrManagedVMOptions := &drautomationservicev1.GetDrManagedVMOptions{ - InstanceID: core.StringPtr("crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::"), + InstanceID: core.StringPtr("123456d3-1122-3344-b67d-4389b44b7bf9"), AcceptLanguage: core.StringPtr("testString"), - IfNoneMatch: core.StringPtr("testString"), } managedVMMapResponse, response, err := drAutomationServiceService.GetDrManagedVM(getDrManagedVMOptions) @@ -207,9 +201,8 @@ var _ = Describe(`DrAutomationServiceV1 Integration Tests`, func() { }) It(`GetDrSummary(getDrSummaryOptions *GetDrSummaryOptions)`, func() { getDrSummaryOptions := &drautomationservicev1.GetDrSummaryOptions{ - InstanceID: core.StringPtr("crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::"), + InstanceID: core.StringPtr("123456d3-1122-3344-b67d-4389b44b7bf9"), AcceptLanguage: core.StringPtr("testString"), - IfNoneMatch: core.StringPtr("testString"), } drAutomationGetSummaryResponse, response, err := drAutomationServiceService.GetDrSummary(getDrSummaryOptions) @@ -225,10 +218,9 @@ var _ = Describe(`DrAutomationServiceV1 Integration Tests`, func() { }) It(`GetMachineType(getMachineTypeOptions *GetMachineTypeOptions)`, func() { getMachineTypeOptions := &drautomationservicev1.GetMachineTypeOptions{ - InstanceID: core.StringPtr("crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::"), + InstanceID: core.StringPtr("123456d3-1122-3344-b67d-4389b44b7bf9"), PrimaryWorkspaceName: core.StringPtr("Test-workspace-wdc06"), - AcceptLanguage: core.StringPtr("testString"), - IfNoneMatch: core.StringPtr("testString"), + AcceptLanguage: core.StringPtr("testString"), StandbyWorkspaceName: core.StringPtr("Test-workspace-wdc07"), } @@ -245,9 +237,8 @@ var _ = Describe(`DrAutomationServiceV1 Integration Tests`, func() { }) It(`GetPowervsWorkspaces(getPowervsWorkspacesOptions *GetPowervsWorkspacesOptions)`, func() { getPowervsWorkspacesOptions := &drautomationservicev1.GetPowervsWorkspacesOptions{ - InstanceID: core.StringPtr("crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::"), - LocationID: core.StringPtr("testString"), - IfNoneMatch: core.StringPtr("testString"), + InstanceID: core.StringPtr("123456d3-1122-3344-b67d-4389b44b7bf9"), + LocationID: core.StringPtr("testString"), } drData, response, err := drAutomationServiceService.GetPowervsWorkspaces(getPowervsWorkspacesOptions) @@ -263,9 +254,8 @@ var _ = Describe(`DrAutomationServiceV1 Integration Tests`, func() { }) It(`GetManageDr(getManageDrOptions *GetManageDrOptions)`, func() { getManageDrOptions := &drautomationservicev1.GetManageDrOptions{ - InstanceID: core.StringPtr("crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::"), + InstanceID: core.StringPtr("123456d3-1122-3344-b67d-4389b44b7bf9"), AcceptLanguage: core.StringPtr("testString"), - IfNoneMatch: core.StringPtr("testString"), } serviceInstanceManageDr, response, err := drAutomationServiceService.GetManageDr(getManageDrOptions) @@ -281,37 +271,33 @@ var _ = Describe(`DrAutomationServiceV1 Integration Tests`, func() { }) It(`CreateManageDr(createManageDrOptions *CreateManageDrOptions)`, func() { createManageDrOptions := &drautomationservicev1.CreateManageDrOptions{ - InstanceID: core.StringPtr("crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::"), - APIKey: core.StringPtr("testString"), - ClientID: core.StringPtr("d9f2c83a-97d2-4b14-bf62-8eaecc67a122"), - ClientSecret: core.StringPtr("N8lQ4tP2xM1yT5rS8wK6qR9dD7vF1hU4sA3bE2jG0pL9oX7yC"), - GUID: core.StringPtr("123e4567-e89b-12d3-a456-426614174000"), - LocationID: core.StringPtr("dal10"), - MachineType: core.StringPtr("bx2-4x16"), - OrchestratorHa: core.BoolPtr(true), - OrchestratorLocationType: core.StringPtr("off-premises"), - OrchestratorName: core.StringPtr("adminUser"), - OrchestratorPassword: core.StringPtr("testString"), - OrchestratorWorkspaceID: core.StringPtr("orch-workspace-01"), - OrchestratorWorkspaceLocation: core.StringPtr("us-south"), - ProxyIP: core.StringPtr("10.40.30.10:8888"), - RegionID: core.StringPtr("us-south"), - ResourceInstance: core.StringPtr("crn:v1:bluemix:public:resource-controller::res123"), - SecondaryWorkspaceID: core.StringPtr("secondary-workspace789"), - Secret: core.StringPtr("testString"), - SecretGroup: core.StringPtr("default-secret-group"), - SSHKeyName: core.StringPtr("my-ssh-key"), - StandbyMachineType: core.StringPtr("bx2-8x32"), - StandbyOrchestratorName: core.StringPtr("standbyAdmin"), - StandbyOrchestratorWorkspaceID: core.StringPtr("orch-standby-02"), - StandbyOrchestratorWorkspaceLocation: core.StringPtr("us-east"), - StandbyTier: core.StringPtr("Premium"), - TenantName: core.StringPtr("xxx.ibm.com"), - Tier: core.StringPtr("Standard"), - StandByRedeploy: core.StringPtr("testString"), - AcceptLanguage: core.StringPtr("testString"), - IfNoneMatch: core.StringPtr("testString"), - AcceptsIncomplete: core.BoolPtr(true), + InstanceID: core.StringPtr("123456d3-1122-3344-b67d-4389b44b7bf9"), + LocationID: core.StringPtr("dal10"), + MachineType: core.StringPtr("bx2-4x16"), + OrchestratorLocationType: core.StringPtr("off-premises"), + OrchestratorName: core.StringPtr("adminUser"), + OrchestratorPassword: core.StringPtr("testString"), + OrchestratorWorkspaceID: core.StringPtr("orch-workspace-01"), + APIKey: core.StringPtr("testString"), + ClientID: core.StringPtr("abcd-97d2-1234-bf62-8eaecc67a1234"), + ClientSecret: core.StringPtr("abcd1234xM1y123wK6qR9123456789bE2jG0pabcdefgh"), + GUID: core.StringPtr("123e4567-e89b-12d3-a456-426614174000"), + OrchestratorHa: core.BoolPtr(true), + ProxyIP: core.StringPtr("10.40.30.10:8888"), + RegionID: core.StringPtr("us-south"), + ResourceInstance: core.StringPtr("crn:v1:bluemix:public:resource-controller::res123"), + Secret: core.StringPtr("testString"), + SecretGroup: core.StringPtr("default-secret-group"), + SSHKeyName: core.StringPtr("my-ssh-key"), + StandbyMachineType: core.StringPtr("bx2-8x32"), + StandbyOrchestratorName: core.StringPtr("standbyAdmin"), + StandbyOrchestratorWorkspaceID: core.StringPtr("orch-standby-02"), + StandbyTier: core.StringPtr("Premium"), + TenantName: core.StringPtr("xxx.ibm.com"), + Tier: core.StringPtr("Standard"), + StandByRedeploy: core.StringPtr("testString"), + AcceptLanguage: core.StringPtr("testString"), + AcceptsIncomplete: core.BoolPtr(true), } serviceInstanceManageDr, response, err := drAutomationServiceService.CreateManageDr(createManageDrOptions) @@ -327,9 +313,8 @@ var _ = Describe(`DrAutomationServiceV1 Integration Tests`, func() { }) It(`GetLastOperation(getLastOperationOptions *GetLastOperationOptions)`, func() { getLastOperationOptions := &drautomationservicev1.GetLastOperationOptions{ - InstanceID: core.StringPtr("crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::"), + InstanceID: core.StringPtr("123456d3-1122-3344-b67d-4389b44b7bf9"), AcceptLanguage: core.StringPtr("testString"), - IfNoneMatch: core.StringPtr("testString"), } serviceInstanceStatus, response, err := drAutomationServiceService.GetLastOperation(getLastOperationOptions) @@ -345,12 +330,11 @@ var _ = Describe(`DrAutomationServiceV1 Integration Tests`, func() { }) It(`ListEvents(listEventsOptions *ListEventsOptions)`, func() { listEventsOptions := &drautomationservicev1.ListEventsOptions{ - InstanceID: core.StringPtr("crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::"), - Time: core.StringPtr("2025-06-19T23:59:59Z"), - FromTime: core.StringPtr("2025-06-19T00:00:00Z"), - ToTime: core.StringPtr("2025-06-19T23:59:59Z"), + InstanceID: core.StringPtr("123456d3-1122-3344-b67d-4389b44b7bf9"), + Time: core.StringPtr("2025-06-19T23:59:59Z"), + FromTime: core.StringPtr("2025-06-19T00:00:00Z"), + ToTime: core.StringPtr("2025-06-19T23:59:59Z"), AcceptLanguage: core.StringPtr("testString"), - IfNoneMatch: core.StringPtr("testString"), } eventCollection, response, err := drAutomationServiceService.ListEvents(listEventsOptions) @@ -366,10 +350,9 @@ var _ = Describe(`DrAutomationServiceV1 Integration Tests`, func() { }) It(`GetEvent(getEventOptions *GetEventOptions)`, func() { getEventOptions := &drautomationservicev1.GetEventOptions{ - InstanceID: core.StringPtr("crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::"), - EventID: core.StringPtr("00116b2a-9326-4024-839e-fb5364b76898"), + InstanceID: core.StringPtr("123456d3-1122-3344-b67d-4389b44b7bf9"), + EventID: core.StringPtr("00116b2a-9326-4024-839e-fb5364b76898"), AcceptLanguage: core.StringPtr("testString"), - IfNoneMatch: core.StringPtr("testString"), } event, response, err := drAutomationServiceService.GetEvent(getEventOptions) diff --git a/ibm/service/drautomationservice/dra-go-sdk/drautomationservicev1/dr_automation_service_v1_test.go b/ibm/service/drautomationservice/dra-go-sdk/drautomationservicev1/dr_automation_service_v1_test.go index 9b15bd6df9..1f516adbde 100644 --- a/ibm/service/drautomationservice/dra-go-sdk/drautomationservicev1/dr_automation_service_v1_test.go +++ b/ibm/service/drautomationservice/dra-go-sdk/drautomationservicev1/dr_automation_service_v1_test.go @@ -67,13 +67,14 @@ var _ = Describe(`DrAutomationServiceV1`, func() { Context(`Using external config, construct service client instances`, func() { // Map containing environment variables used in testing. var testEnvironment = map[string]string{ - "DR_AUTOMATION_SERVICE_URL": "https://drautomationservicev1/api", + "DR_AUTOMATION_SERVICE_URL": "https://drautomationservicev1/api", "DR_AUTOMATION_SERVICE_AUTH_TYPE": "noauth", } It(`Create service client using external config successfully`, func() { SetTestEnvironment(testEnvironment) - drAutomationServiceService, serviceErr := drautomationservicev1.NewDrAutomationServiceV1UsingExternalConfig(&drautomationservicev1.DrAutomationServiceV1Options{}) + drAutomationServiceService, serviceErr := drautomationservicev1.NewDrAutomationServiceV1UsingExternalConfig(&drautomationservicev1.DrAutomationServiceV1Options{ + }) Expect(drAutomationServiceService).ToNot(BeNil()) Expect(serviceErr).To(BeNil()) ClearTestEnvironment(testEnvironment) @@ -102,7 +103,8 @@ var _ = Describe(`DrAutomationServiceV1`, func() { }) It(`Create service client using external config and set url programatically successfully`, func() { SetTestEnvironment(testEnvironment) - drAutomationServiceService, serviceErr := drautomationservicev1.NewDrAutomationServiceV1UsingExternalConfig(&drautomationservicev1.DrAutomationServiceV1Options{}) + drAutomationServiceService, serviceErr := drautomationservicev1.NewDrAutomationServiceV1UsingExternalConfig(&drautomationservicev1.DrAutomationServiceV1Options{ + }) err := drAutomationServiceService.SetServiceURL("https://testService/api") Expect(err).To(BeNil()) Expect(drAutomationServiceService).ToNot(BeNil()) @@ -120,12 +122,13 @@ var _ = Describe(`DrAutomationServiceV1`, func() { Context(`Using external config, construct service client instances with error: Invalid Auth`, func() { // Map containing environment variables used in testing. var testEnvironment = map[string]string{ - "DR_AUTOMATION_SERVICE_URL": "https://drautomationservicev1/api", + "DR_AUTOMATION_SERVICE_URL": "https://drautomationservicev1/api", "DR_AUTOMATION_SERVICE_AUTH_TYPE": "someOtherAuth", } SetTestEnvironment(testEnvironment) - drAutomationServiceService, serviceErr := drautomationservicev1.NewDrAutomationServiceV1UsingExternalConfig(&drautomationservicev1.DrAutomationServiceV1Options{}) + drAutomationServiceService, serviceErr := drautomationservicev1.NewDrAutomationServiceV1UsingExternalConfig(&drautomationservicev1.DrAutomationServiceV1Options{ + }) It(`Instantiate service client with error`, func() { Expect(drAutomationServiceService).To(BeNil()) @@ -136,7 +139,7 @@ var _ = Describe(`DrAutomationServiceV1`, func() { Context(`Using external config, construct service client instances with error: Invalid URL`, func() { // Map containing environment variables used in testing. var testEnvironment = map[string]string{ - "DR_AUTOMATION_SERVICE_AUTH_TYPE": "NOAuth", + "DR_AUTOMATION_SERVICE_AUTH_TYPE": "NOAuth", } SetTestEnvironment(testEnvironment) @@ -162,7 +165,7 @@ var _ = Describe(`DrAutomationServiceV1`, func() { }) }) Describe(`GetApikey(getApikeyOptions *GetApikeyOptions) - Operation response error`, func() { - getApikeyPath := "/drautomation/v1/apikey/crn:v1:staging:public:power-dr-automation:global:a%2Fa123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::" + getApikeyPath := "/drautomation/v1/apikey/123456d3-1122-3344-b67d-4389b44b7bf9" Context(`Using mock server endpoint with invalid JSON response`, func() { BeforeEach(func() { testServer = httptest.NewServer(http.HandlerFunc(func(res http.ResponseWriter, req *http.Request) { @@ -173,8 +176,6 @@ var _ = Describe(`DrAutomationServiceV1`, func() { Expect(req.Method).To(Equal("GET")) Expect(req.Header["Accept-Language"]).ToNot(BeNil()) Expect(req.Header["Accept-Language"][0]).To(Equal(fmt.Sprintf("%v", "testString"))) - Expect(req.Header["If-None-Match"]).ToNot(BeNil()) - Expect(req.Header["If-None-Match"][0]).To(Equal(fmt.Sprintf("%v", "testString"))) res.Header().Set("Content-type", "application/json") res.WriteHeader(200) fmt.Fprint(res, `} this is not valid json {`) @@ -190,9 +191,8 @@ var _ = Describe(`DrAutomationServiceV1`, func() { // Construct an instance of the GetApikeyOptions model getApikeyOptionsModel := new(drautomationservicev1.GetApikeyOptions) - getApikeyOptionsModel.InstanceID = core.StringPtr("crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::") + getApikeyOptionsModel.InstanceID = core.StringPtr("123456d3-1122-3344-b67d-4389b44b7bf9") getApikeyOptionsModel.AcceptLanguage = core.StringPtr("testString") - getApikeyOptionsModel.IfNoneMatch = core.StringPtr("testString") getApikeyOptionsModel.Headers = map[string]string{"x-custom-header": "x-custom-value"} // Expect response parsing to fail since we are receiving a text/plain response result, response, operationErr := drAutomationServiceService.GetApikey(getApikeyOptionsModel) @@ -213,7 +213,7 @@ var _ = Describe(`DrAutomationServiceV1`, func() { }) }) Describe(`GetApikey(getApikeyOptions *GetApikeyOptions)`, func() { - getApikeyPath := "/drautomation/v1/apikey/crn:v1:staging:public:power-dr-automation:global:a%2Fa123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::" + getApikeyPath := "/drautomation/v1/apikey/123456d3-1122-3344-b67d-4389b44b7bf9" Context(`Using mock server endpoint with timeout`, func() { BeforeEach(func() { testServer = httptest.NewServer(http.HandlerFunc(func(res http.ResponseWriter, req *http.Request) { @@ -225,8 +225,6 @@ var _ = Describe(`DrAutomationServiceV1`, func() { Expect(req.Header["Accept-Language"]).ToNot(BeNil()) Expect(req.Header["Accept-Language"][0]).To(Equal(fmt.Sprintf("%v", "testString"))) - Expect(req.Header["If-None-Match"]).ToNot(BeNil()) - Expect(req.Header["If-None-Match"][0]).To(Equal(fmt.Sprintf("%v", "testString"))) // Sleep a short time to support a timeout test time.Sleep(100 * time.Millisecond) @@ -247,9 +245,8 @@ var _ = Describe(`DrAutomationServiceV1`, func() { // Construct an instance of the GetApikeyOptions model getApikeyOptionsModel := new(drautomationservicev1.GetApikeyOptions) - getApikeyOptionsModel.InstanceID = core.StringPtr("crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::") + getApikeyOptionsModel.InstanceID = core.StringPtr("123456d3-1122-3344-b67d-4389b44b7bf9") getApikeyOptionsModel.AcceptLanguage = core.StringPtr("testString") - getApikeyOptionsModel.IfNoneMatch = core.StringPtr("testString") getApikeyOptionsModel.Headers = map[string]string{"x-custom-header": "x-custom-value"} // Invoke operation with a Context to test a timeout error @@ -288,8 +285,6 @@ var _ = Describe(`DrAutomationServiceV1`, func() { Expect(req.Header["Accept-Language"]).ToNot(BeNil()) Expect(req.Header["Accept-Language"][0]).To(Equal(fmt.Sprintf("%v", "testString"))) - Expect(req.Header["If-None-Match"]).ToNot(BeNil()) - Expect(req.Header["If-None-Match"][0]).To(Equal(fmt.Sprintf("%v", "testString"))) // Set mock response res.Header().Set("Content-type", "application/json") res.WriteHeader(200) @@ -312,9 +307,8 @@ var _ = Describe(`DrAutomationServiceV1`, func() { // Construct an instance of the GetApikeyOptions model getApikeyOptionsModel := new(drautomationservicev1.GetApikeyOptions) - getApikeyOptionsModel.InstanceID = core.StringPtr("crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::") + getApikeyOptionsModel.InstanceID = core.StringPtr("123456d3-1122-3344-b67d-4389b44b7bf9") getApikeyOptionsModel.AcceptLanguage = core.StringPtr("testString") - getApikeyOptionsModel.IfNoneMatch = core.StringPtr("testString") getApikeyOptionsModel.Headers = map[string]string{"x-custom-header": "x-custom-value"} // Invoke operation with valid options model (positive test) @@ -334,9 +328,8 @@ var _ = Describe(`DrAutomationServiceV1`, func() { // Construct an instance of the GetApikeyOptions model getApikeyOptionsModel := new(drautomationservicev1.GetApikeyOptions) - getApikeyOptionsModel.InstanceID = core.StringPtr("crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::") + getApikeyOptionsModel.InstanceID = core.StringPtr("123456d3-1122-3344-b67d-4389b44b7bf9") getApikeyOptionsModel.AcceptLanguage = core.StringPtr("testString") - getApikeyOptionsModel.IfNoneMatch = core.StringPtr("testString") getApikeyOptionsModel.Headers = map[string]string{"x-custom-header": "x-custom-value"} // Invoke operation with empty URL (negative test) err := drAutomationServiceService.SetServiceURL("") @@ -377,9 +370,8 @@ var _ = Describe(`DrAutomationServiceV1`, func() { // Construct an instance of the GetApikeyOptions model getApikeyOptionsModel := new(drautomationservicev1.GetApikeyOptions) - getApikeyOptionsModel.InstanceID = core.StringPtr("crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::") + getApikeyOptionsModel.InstanceID = core.StringPtr("123456d3-1122-3344-b67d-4389b44b7bf9") getApikeyOptionsModel.AcceptLanguage = core.StringPtr("testString") - getApikeyOptionsModel.IfNoneMatch = core.StringPtr("testString") getApikeyOptionsModel.Headers = map[string]string{"x-custom-header": "x-custom-value"} // Invoke operation @@ -396,7 +388,7 @@ var _ = Describe(`DrAutomationServiceV1`, func() { }) }) Describe(`CreateApikey(createApikeyOptions *CreateApikeyOptions) - Operation response error`, func() { - createApikeyPath := "/drautomation/v1/apikey/crn:v1:staging:public:power-dr-automation:global:a%2Fa123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::" + createApikeyPath := "/drautomation/v1/apikey/123456d3-1122-3344-b67d-4389b44b7bf9" Context(`Using mock server endpoint with invalid JSON response`, func() { BeforeEach(func() { testServer = httptest.NewServer(http.HandlerFunc(func(res http.ResponseWriter, req *http.Request) { @@ -407,8 +399,6 @@ var _ = Describe(`DrAutomationServiceV1`, func() { Expect(req.Method).To(Equal("POST")) Expect(req.Header["Accept-Language"]).ToNot(BeNil()) Expect(req.Header["Accept-Language"][0]).To(Equal(fmt.Sprintf("%v", "testString"))) - Expect(req.Header["If-None-Match"]).ToNot(BeNil()) - Expect(req.Header["If-None-Match"][0]).To(Equal(fmt.Sprintf("%v", "testString"))) res.Header().Set("Content-type", "application/json") res.WriteHeader(200) fmt.Fprint(res, `} this is not valid json {`) @@ -424,10 +414,9 @@ var _ = Describe(`DrAutomationServiceV1`, func() { // Construct an instance of the CreateApikeyOptions model createApikeyOptionsModel := new(drautomationservicev1.CreateApikeyOptions) - createApikeyOptionsModel.InstanceID = core.StringPtr("crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::") + createApikeyOptionsModel.InstanceID = core.StringPtr("123456d3-1122-3344-b67d-4389b44b7bf9") createApikeyOptionsModel.APIKey = core.StringPtr("abcdefrg_izklmnop_fxbEED") createApikeyOptionsModel.AcceptLanguage = core.StringPtr("testString") - createApikeyOptionsModel.IfNoneMatch = core.StringPtr("testString") createApikeyOptionsModel.Headers = map[string]string{"x-custom-header": "x-custom-value"} // Expect response parsing to fail since we are receiving a text/plain response result, response, operationErr := drAutomationServiceService.CreateApikey(createApikeyOptionsModel) @@ -448,7 +437,7 @@ var _ = Describe(`DrAutomationServiceV1`, func() { }) }) Describe(`CreateApikey(createApikeyOptions *CreateApikeyOptions)`, func() { - createApikeyPath := "/drautomation/v1/apikey/crn:v1:staging:public:power-dr-automation:global:a%2Fa123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::" + createApikeyPath := "/drautomation/v1/apikey/123456d3-1122-3344-b67d-4389b44b7bf9" Context(`Using mock server endpoint with timeout`, func() { BeforeEach(func() { testServer = httptest.NewServer(http.HandlerFunc(func(res http.ResponseWriter, req *http.Request) { @@ -476,8 +465,6 @@ var _ = Describe(`DrAutomationServiceV1`, func() { Expect(req.Header["Accept-Language"]).ToNot(BeNil()) Expect(req.Header["Accept-Language"][0]).To(Equal(fmt.Sprintf("%v", "testString"))) - Expect(req.Header["If-None-Match"]).ToNot(BeNil()) - Expect(req.Header["If-None-Match"][0]).To(Equal(fmt.Sprintf("%v", "testString"))) // Sleep a short time to support a timeout test time.Sleep(100 * time.Millisecond) @@ -498,10 +485,9 @@ var _ = Describe(`DrAutomationServiceV1`, func() { // Construct an instance of the CreateApikeyOptions model createApikeyOptionsModel := new(drautomationservicev1.CreateApikeyOptions) - createApikeyOptionsModel.InstanceID = core.StringPtr("crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::") + createApikeyOptionsModel.InstanceID = core.StringPtr("123456d3-1122-3344-b67d-4389b44b7bf9") createApikeyOptionsModel.APIKey = core.StringPtr("abcdefrg_izklmnop_fxbEED") createApikeyOptionsModel.AcceptLanguage = core.StringPtr("testString") - createApikeyOptionsModel.IfNoneMatch = core.StringPtr("testString") createApikeyOptionsModel.Headers = map[string]string{"x-custom-header": "x-custom-value"} // Invoke operation with a Context to test a timeout error @@ -556,8 +542,6 @@ var _ = Describe(`DrAutomationServiceV1`, func() { Expect(req.Header["Accept-Language"]).ToNot(BeNil()) Expect(req.Header["Accept-Language"][0]).To(Equal(fmt.Sprintf("%v", "testString"))) - Expect(req.Header["If-None-Match"]).ToNot(BeNil()) - Expect(req.Header["If-None-Match"][0]).To(Equal(fmt.Sprintf("%v", "testString"))) // Set mock response res.Header().Set("Content-type", "application/json") res.WriteHeader(200) @@ -580,10 +564,9 @@ var _ = Describe(`DrAutomationServiceV1`, func() { // Construct an instance of the CreateApikeyOptions model createApikeyOptionsModel := new(drautomationservicev1.CreateApikeyOptions) - createApikeyOptionsModel.InstanceID = core.StringPtr("crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::") + createApikeyOptionsModel.InstanceID = core.StringPtr("123456d3-1122-3344-b67d-4389b44b7bf9") createApikeyOptionsModel.APIKey = core.StringPtr("abcdefrg_izklmnop_fxbEED") createApikeyOptionsModel.AcceptLanguage = core.StringPtr("testString") - createApikeyOptionsModel.IfNoneMatch = core.StringPtr("testString") createApikeyOptionsModel.Headers = map[string]string{"x-custom-header": "x-custom-value"} // Invoke operation with valid options model (positive test) @@ -603,10 +586,9 @@ var _ = Describe(`DrAutomationServiceV1`, func() { // Construct an instance of the CreateApikeyOptions model createApikeyOptionsModel := new(drautomationservicev1.CreateApikeyOptions) - createApikeyOptionsModel.InstanceID = core.StringPtr("crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::") + createApikeyOptionsModel.InstanceID = core.StringPtr("123456d3-1122-3344-b67d-4389b44b7bf9") createApikeyOptionsModel.APIKey = core.StringPtr("abcdefrg_izklmnop_fxbEED") createApikeyOptionsModel.AcceptLanguage = core.StringPtr("testString") - createApikeyOptionsModel.IfNoneMatch = core.StringPtr("testString") createApikeyOptionsModel.Headers = map[string]string{"x-custom-header": "x-custom-value"} // Invoke operation with empty URL (negative test) err := drAutomationServiceService.SetServiceURL("") @@ -647,10 +629,9 @@ var _ = Describe(`DrAutomationServiceV1`, func() { // Construct an instance of the CreateApikeyOptions model createApikeyOptionsModel := new(drautomationservicev1.CreateApikeyOptions) - createApikeyOptionsModel.InstanceID = core.StringPtr("crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::") + createApikeyOptionsModel.InstanceID = core.StringPtr("123456d3-1122-3344-b67d-4389b44b7bf9") createApikeyOptionsModel.APIKey = core.StringPtr("abcdefrg_izklmnop_fxbEED") createApikeyOptionsModel.AcceptLanguage = core.StringPtr("testString") - createApikeyOptionsModel.IfNoneMatch = core.StringPtr("testString") createApikeyOptionsModel.Headers = map[string]string{"x-custom-header": "x-custom-value"} // Invoke operation @@ -667,7 +648,7 @@ var _ = Describe(`DrAutomationServiceV1`, func() { }) }) Describe(`UpdateApikey(updateApikeyOptions *UpdateApikeyOptions) - Operation response error`, func() { - updateApikeyPath := "/drautomation/v1/apikey/crn:v1:staging:public:power-dr-automation:global:a%2Fa123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::" + updateApikeyPath := "/drautomation/v1/apikey/123456d3-1122-3344-b67d-4389b44b7bf9" Context(`Using mock server endpoint with invalid JSON response`, func() { BeforeEach(func() { testServer = httptest.NewServer(http.HandlerFunc(func(res http.ResponseWriter, req *http.Request) { @@ -678,8 +659,6 @@ var _ = Describe(`DrAutomationServiceV1`, func() { Expect(req.Method).To(Equal("PUT")) Expect(req.Header["Accept-Language"]).ToNot(BeNil()) Expect(req.Header["Accept-Language"][0]).To(Equal(fmt.Sprintf("%v", "testString"))) - Expect(req.Header["If-None-Match"]).ToNot(BeNil()) - Expect(req.Header["If-None-Match"][0]).To(Equal(fmt.Sprintf("%v", "testString"))) res.Header().Set("Content-type", "application/json") res.WriteHeader(200) fmt.Fprint(res, `} this is not valid json {`) @@ -695,10 +674,9 @@ var _ = Describe(`DrAutomationServiceV1`, func() { // Construct an instance of the UpdateApikeyOptions model updateApikeyOptionsModel := new(drautomationservicev1.UpdateApikeyOptions) - updateApikeyOptionsModel.InstanceID = core.StringPtr("crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::") + updateApikeyOptionsModel.InstanceID = core.StringPtr("123456d3-1122-3344-b67d-4389b44b7bf9") updateApikeyOptionsModel.APIKey = core.StringPtr("adfadfdsafsdfdsf") updateApikeyOptionsModel.AcceptLanguage = core.StringPtr("testString") - updateApikeyOptionsModel.IfNoneMatch = core.StringPtr("testString") updateApikeyOptionsModel.Headers = map[string]string{"x-custom-header": "x-custom-value"} // Expect response parsing to fail since we are receiving a text/plain response result, response, operationErr := drAutomationServiceService.UpdateApikey(updateApikeyOptionsModel) @@ -719,7 +697,7 @@ var _ = Describe(`DrAutomationServiceV1`, func() { }) }) Describe(`UpdateApikey(updateApikeyOptions *UpdateApikeyOptions)`, func() { - updateApikeyPath := "/drautomation/v1/apikey/crn:v1:staging:public:power-dr-automation:global:a%2Fa123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::" + updateApikeyPath := "/drautomation/v1/apikey/123456d3-1122-3344-b67d-4389b44b7bf9" Context(`Using mock server endpoint with timeout`, func() { BeforeEach(func() { testServer = httptest.NewServer(http.HandlerFunc(func(res http.ResponseWriter, req *http.Request) { @@ -747,8 +725,6 @@ var _ = Describe(`DrAutomationServiceV1`, func() { Expect(req.Header["Accept-Language"]).ToNot(BeNil()) Expect(req.Header["Accept-Language"][0]).To(Equal(fmt.Sprintf("%v", "testString"))) - Expect(req.Header["If-None-Match"]).ToNot(BeNil()) - Expect(req.Header["If-None-Match"][0]).To(Equal(fmt.Sprintf("%v", "testString"))) // Sleep a short time to support a timeout test time.Sleep(100 * time.Millisecond) @@ -769,10 +745,9 @@ var _ = Describe(`DrAutomationServiceV1`, func() { // Construct an instance of the UpdateApikeyOptions model updateApikeyOptionsModel := new(drautomationservicev1.UpdateApikeyOptions) - updateApikeyOptionsModel.InstanceID = core.StringPtr("crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::") + updateApikeyOptionsModel.InstanceID = core.StringPtr("123456d3-1122-3344-b67d-4389b44b7bf9") updateApikeyOptionsModel.APIKey = core.StringPtr("adfadfdsafsdfdsf") updateApikeyOptionsModel.AcceptLanguage = core.StringPtr("testString") - updateApikeyOptionsModel.IfNoneMatch = core.StringPtr("testString") updateApikeyOptionsModel.Headers = map[string]string{"x-custom-header": "x-custom-value"} // Invoke operation with a Context to test a timeout error @@ -827,8 +802,6 @@ var _ = Describe(`DrAutomationServiceV1`, func() { Expect(req.Header["Accept-Language"]).ToNot(BeNil()) Expect(req.Header["Accept-Language"][0]).To(Equal(fmt.Sprintf("%v", "testString"))) - Expect(req.Header["If-None-Match"]).ToNot(BeNil()) - Expect(req.Header["If-None-Match"][0]).To(Equal(fmt.Sprintf("%v", "testString"))) // Set mock response res.Header().Set("Content-type", "application/json") res.WriteHeader(200) @@ -851,10 +824,9 @@ var _ = Describe(`DrAutomationServiceV1`, func() { // Construct an instance of the UpdateApikeyOptions model updateApikeyOptionsModel := new(drautomationservicev1.UpdateApikeyOptions) - updateApikeyOptionsModel.InstanceID = core.StringPtr("crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::") + updateApikeyOptionsModel.InstanceID = core.StringPtr("123456d3-1122-3344-b67d-4389b44b7bf9") updateApikeyOptionsModel.APIKey = core.StringPtr("adfadfdsafsdfdsf") updateApikeyOptionsModel.AcceptLanguage = core.StringPtr("testString") - updateApikeyOptionsModel.IfNoneMatch = core.StringPtr("testString") updateApikeyOptionsModel.Headers = map[string]string{"x-custom-header": "x-custom-value"} // Invoke operation with valid options model (positive test) @@ -874,10 +846,9 @@ var _ = Describe(`DrAutomationServiceV1`, func() { // Construct an instance of the UpdateApikeyOptions model updateApikeyOptionsModel := new(drautomationservicev1.UpdateApikeyOptions) - updateApikeyOptionsModel.InstanceID = core.StringPtr("crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::") + updateApikeyOptionsModel.InstanceID = core.StringPtr("123456d3-1122-3344-b67d-4389b44b7bf9") updateApikeyOptionsModel.APIKey = core.StringPtr("adfadfdsafsdfdsf") updateApikeyOptionsModel.AcceptLanguage = core.StringPtr("testString") - updateApikeyOptionsModel.IfNoneMatch = core.StringPtr("testString") updateApikeyOptionsModel.Headers = map[string]string{"x-custom-header": "x-custom-value"} // Invoke operation with empty URL (negative test) err := drAutomationServiceService.SetServiceURL("") @@ -918,10 +889,9 @@ var _ = Describe(`DrAutomationServiceV1`, func() { // Construct an instance of the UpdateApikeyOptions model updateApikeyOptionsModel := new(drautomationservicev1.UpdateApikeyOptions) - updateApikeyOptionsModel.InstanceID = core.StringPtr("crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::") + updateApikeyOptionsModel.InstanceID = core.StringPtr("123456d3-1122-3344-b67d-4389b44b7bf9") updateApikeyOptionsModel.APIKey = core.StringPtr("adfadfdsafsdfdsf") updateApikeyOptionsModel.AcceptLanguage = core.StringPtr("testString") - updateApikeyOptionsModel.IfNoneMatch = core.StringPtr("testString") updateApikeyOptionsModel.Headers = map[string]string{"x-custom-header": "x-custom-value"} // Invoke operation @@ -938,7 +908,7 @@ var _ = Describe(`DrAutomationServiceV1`, func() { }) }) Describe(`GetDrGrsLocationPair(getDrGrsLocationPairOptions *GetDrGrsLocationPairOptions) - Operation response error`, func() { - getDrGrsLocationPairPath := "/drautomation/v1/dr_grs_location_pairs/crn:v1:staging:public:power-dr-automation:global:a%2Fa123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::" + getDrGrsLocationPairPath := "/drautomation/v1/dr_grs_location_pairs/123456d3-1122-3344-b67d-4389b44b7bf9" Context(`Using mock server endpoint with invalid JSON response`, func() { BeforeEach(func() { testServer = httptest.NewServer(http.HandlerFunc(func(res http.ResponseWriter, req *http.Request) { @@ -949,8 +919,6 @@ var _ = Describe(`DrAutomationServiceV1`, func() { Expect(req.Method).To(Equal("GET")) Expect(req.Header["Accept-Language"]).ToNot(BeNil()) Expect(req.Header["Accept-Language"][0]).To(Equal(fmt.Sprintf("%v", "testString"))) - Expect(req.Header["If-None-Match"]).ToNot(BeNil()) - Expect(req.Header["If-None-Match"][0]).To(Equal(fmt.Sprintf("%v", "testString"))) res.Header().Set("Content-type", "application/json") res.WriteHeader(200) fmt.Fprint(res, `} this is not valid json {`) @@ -966,9 +934,8 @@ var _ = Describe(`DrAutomationServiceV1`, func() { // Construct an instance of the GetDrGrsLocationPairOptions model getDrGrsLocationPairOptionsModel := new(drautomationservicev1.GetDrGrsLocationPairOptions) - getDrGrsLocationPairOptionsModel.InstanceID = core.StringPtr("crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::") + getDrGrsLocationPairOptionsModel.InstanceID = core.StringPtr("123456d3-1122-3344-b67d-4389b44b7bf9") getDrGrsLocationPairOptionsModel.AcceptLanguage = core.StringPtr("testString") - getDrGrsLocationPairOptionsModel.IfNoneMatch = core.StringPtr("testString") getDrGrsLocationPairOptionsModel.Headers = map[string]string{"x-custom-header": "x-custom-value"} // Expect response parsing to fail since we are receiving a text/plain response result, response, operationErr := drAutomationServiceService.GetDrGrsLocationPair(getDrGrsLocationPairOptionsModel) @@ -989,7 +956,7 @@ var _ = Describe(`DrAutomationServiceV1`, func() { }) }) Describe(`GetDrGrsLocationPair(getDrGrsLocationPairOptions *GetDrGrsLocationPairOptions)`, func() { - getDrGrsLocationPairPath := "/drautomation/v1/dr_grs_location_pairs/crn:v1:staging:public:power-dr-automation:global:a%2Fa123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::" + getDrGrsLocationPairPath := "/drautomation/v1/dr_grs_location_pairs/123456d3-1122-3344-b67d-4389b44b7bf9" Context(`Using mock server endpoint with timeout`, func() { BeforeEach(func() { testServer = httptest.NewServer(http.HandlerFunc(func(res http.ResponseWriter, req *http.Request) { @@ -1001,8 +968,6 @@ var _ = Describe(`DrAutomationServiceV1`, func() { Expect(req.Header["Accept-Language"]).ToNot(BeNil()) Expect(req.Header["Accept-Language"][0]).To(Equal(fmt.Sprintf("%v", "testString"))) - Expect(req.Header["If-None-Match"]).ToNot(BeNil()) - Expect(req.Header["If-None-Match"][0]).To(Equal(fmt.Sprintf("%v", "testString"))) // Sleep a short time to support a timeout test time.Sleep(100 * time.Millisecond) @@ -1023,9 +988,8 @@ var _ = Describe(`DrAutomationServiceV1`, func() { // Construct an instance of the GetDrGrsLocationPairOptions model getDrGrsLocationPairOptionsModel := new(drautomationservicev1.GetDrGrsLocationPairOptions) - getDrGrsLocationPairOptionsModel.InstanceID = core.StringPtr("crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::") + getDrGrsLocationPairOptionsModel.InstanceID = core.StringPtr("123456d3-1122-3344-b67d-4389b44b7bf9") getDrGrsLocationPairOptionsModel.AcceptLanguage = core.StringPtr("testString") - getDrGrsLocationPairOptionsModel.IfNoneMatch = core.StringPtr("testString") getDrGrsLocationPairOptionsModel.Headers = map[string]string{"x-custom-header": "x-custom-value"} // Invoke operation with a Context to test a timeout error @@ -1064,8 +1028,6 @@ var _ = Describe(`DrAutomationServiceV1`, func() { Expect(req.Header["Accept-Language"]).ToNot(BeNil()) Expect(req.Header["Accept-Language"][0]).To(Equal(fmt.Sprintf("%v", "testString"))) - Expect(req.Header["If-None-Match"]).ToNot(BeNil()) - Expect(req.Header["If-None-Match"][0]).To(Equal(fmt.Sprintf("%v", "testString"))) // Set mock response res.Header().Set("Content-type", "application/json") res.WriteHeader(200) @@ -1088,9 +1050,8 @@ var _ = Describe(`DrAutomationServiceV1`, func() { // Construct an instance of the GetDrGrsLocationPairOptions model getDrGrsLocationPairOptionsModel := new(drautomationservicev1.GetDrGrsLocationPairOptions) - getDrGrsLocationPairOptionsModel.InstanceID = core.StringPtr("crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::") + getDrGrsLocationPairOptionsModel.InstanceID = core.StringPtr("123456d3-1122-3344-b67d-4389b44b7bf9") getDrGrsLocationPairOptionsModel.AcceptLanguage = core.StringPtr("testString") - getDrGrsLocationPairOptionsModel.IfNoneMatch = core.StringPtr("testString") getDrGrsLocationPairOptionsModel.Headers = map[string]string{"x-custom-header": "x-custom-value"} // Invoke operation with valid options model (positive test) @@ -1110,9 +1071,8 @@ var _ = Describe(`DrAutomationServiceV1`, func() { // Construct an instance of the GetDrGrsLocationPairOptions model getDrGrsLocationPairOptionsModel := new(drautomationservicev1.GetDrGrsLocationPairOptions) - getDrGrsLocationPairOptionsModel.InstanceID = core.StringPtr("crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::") + getDrGrsLocationPairOptionsModel.InstanceID = core.StringPtr("123456d3-1122-3344-b67d-4389b44b7bf9") getDrGrsLocationPairOptionsModel.AcceptLanguage = core.StringPtr("testString") - getDrGrsLocationPairOptionsModel.IfNoneMatch = core.StringPtr("testString") getDrGrsLocationPairOptionsModel.Headers = map[string]string{"x-custom-header": "x-custom-value"} // Invoke operation with empty URL (negative test) err := drAutomationServiceService.SetServiceURL("") @@ -1153,9 +1113,8 @@ var _ = Describe(`DrAutomationServiceV1`, func() { // Construct an instance of the GetDrGrsLocationPairOptions model getDrGrsLocationPairOptionsModel := new(drautomationservicev1.GetDrGrsLocationPairOptions) - getDrGrsLocationPairOptionsModel.InstanceID = core.StringPtr("crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::") + getDrGrsLocationPairOptionsModel.InstanceID = core.StringPtr("123456d3-1122-3344-b67d-4389b44b7bf9") getDrGrsLocationPairOptionsModel.AcceptLanguage = core.StringPtr("testString") - getDrGrsLocationPairOptionsModel.IfNoneMatch = core.StringPtr("testString") getDrGrsLocationPairOptionsModel.Headers = map[string]string{"x-custom-header": "x-custom-value"} // Invoke operation @@ -1172,7 +1131,7 @@ var _ = Describe(`DrAutomationServiceV1`, func() { }) }) Describe(`GetDrLocations(getDrLocationsOptions *GetDrLocationsOptions) - Operation response error`, func() { - getDrLocationsPath := "/drautomation/v1/dr_locations/crn:v1:staging:public:power-dr-automation:global:a%2Fa123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::" + getDrLocationsPath := "/drautomation/v1/dr_locations/123456d3-1122-3344-b67d-4389b44b7bf9" Context(`Using mock server endpoint with invalid JSON response`, func() { BeforeEach(func() { testServer = httptest.NewServer(http.HandlerFunc(func(res http.ResponseWriter, req *http.Request) { @@ -1183,8 +1142,6 @@ var _ = Describe(`DrAutomationServiceV1`, func() { Expect(req.Method).To(Equal("GET")) Expect(req.Header["Accept-Language"]).ToNot(BeNil()) Expect(req.Header["Accept-Language"][0]).To(Equal(fmt.Sprintf("%v", "testString"))) - Expect(req.Header["If-None-Match"]).ToNot(BeNil()) - Expect(req.Header["If-None-Match"][0]).To(Equal(fmt.Sprintf("%v", "testString"))) res.Header().Set("Content-type", "application/json") res.WriteHeader(200) fmt.Fprint(res, `} this is not valid json {`) @@ -1200,9 +1157,8 @@ var _ = Describe(`DrAutomationServiceV1`, func() { // Construct an instance of the GetDrLocationsOptions model getDrLocationsOptionsModel := new(drautomationservicev1.GetDrLocationsOptions) - getDrLocationsOptionsModel.InstanceID = core.StringPtr("crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::") + getDrLocationsOptionsModel.InstanceID = core.StringPtr("123456d3-1122-3344-b67d-4389b44b7bf9") getDrLocationsOptionsModel.AcceptLanguage = core.StringPtr("testString") - getDrLocationsOptionsModel.IfNoneMatch = core.StringPtr("testString") getDrLocationsOptionsModel.Headers = map[string]string{"x-custom-header": "x-custom-value"} // Expect response parsing to fail since we are receiving a text/plain response result, response, operationErr := drAutomationServiceService.GetDrLocations(getDrLocationsOptionsModel) @@ -1223,7 +1179,7 @@ var _ = Describe(`DrAutomationServiceV1`, func() { }) }) Describe(`GetDrLocations(getDrLocationsOptions *GetDrLocationsOptions)`, func() { - getDrLocationsPath := "/drautomation/v1/dr_locations/crn:v1:staging:public:power-dr-automation:global:a%2Fa123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::" + getDrLocationsPath := "/drautomation/v1/dr_locations/123456d3-1122-3344-b67d-4389b44b7bf9" Context(`Using mock server endpoint with timeout`, func() { BeforeEach(func() { testServer = httptest.NewServer(http.HandlerFunc(func(res http.ResponseWriter, req *http.Request) { @@ -1235,8 +1191,6 @@ var _ = Describe(`DrAutomationServiceV1`, func() { Expect(req.Header["Accept-Language"]).ToNot(BeNil()) Expect(req.Header["Accept-Language"][0]).To(Equal(fmt.Sprintf("%v", "testString"))) - Expect(req.Header["If-None-Match"]).ToNot(BeNil()) - Expect(req.Header["If-None-Match"][0]).To(Equal(fmt.Sprintf("%v", "testString"))) // Sleep a short time to support a timeout test time.Sleep(100 * time.Millisecond) @@ -1257,9 +1211,8 @@ var _ = Describe(`DrAutomationServiceV1`, func() { // Construct an instance of the GetDrLocationsOptions model getDrLocationsOptionsModel := new(drautomationservicev1.GetDrLocationsOptions) - getDrLocationsOptionsModel.InstanceID = core.StringPtr("crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::") + getDrLocationsOptionsModel.InstanceID = core.StringPtr("123456d3-1122-3344-b67d-4389b44b7bf9") getDrLocationsOptionsModel.AcceptLanguage = core.StringPtr("testString") - getDrLocationsOptionsModel.IfNoneMatch = core.StringPtr("testString") getDrLocationsOptionsModel.Headers = map[string]string{"x-custom-header": "x-custom-value"} // Invoke operation with a Context to test a timeout error @@ -1298,8 +1251,6 @@ var _ = Describe(`DrAutomationServiceV1`, func() { Expect(req.Header["Accept-Language"]).ToNot(BeNil()) Expect(req.Header["Accept-Language"][0]).To(Equal(fmt.Sprintf("%v", "testString"))) - Expect(req.Header["If-None-Match"]).ToNot(BeNil()) - Expect(req.Header["If-None-Match"][0]).To(Equal(fmt.Sprintf("%v", "testString"))) // Set mock response res.Header().Set("Content-type", "application/json") res.WriteHeader(200) @@ -1322,9 +1273,8 @@ var _ = Describe(`DrAutomationServiceV1`, func() { // Construct an instance of the GetDrLocationsOptions model getDrLocationsOptionsModel := new(drautomationservicev1.GetDrLocationsOptions) - getDrLocationsOptionsModel.InstanceID = core.StringPtr("crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::") + getDrLocationsOptionsModel.InstanceID = core.StringPtr("123456d3-1122-3344-b67d-4389b44b7bf9") getDrLocationsOptionsModel.AcceptLanguage = core.StringPtr("testString") - getDrLocationsOptionsModel.IfNoneMatch = core.StringPtr("testString") getDrLocationsOptionsModel.Headers = map[string]string{"x-custom-header": "x-custom-value"} // Invoke operation with valid options model (positive test) @@ -1344,9 +1294,8 @@ var _ = Describe(`DrAutomationServiceV1`, func() { // Construct an instance of the GetDrLocationsOptions model getDrLocationsOptionsModel := new(drautomationservicev1.GetDrLocationsOptions) - getDrLocationsOptionsModel.InstanceID = core.StringPtr("crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::") + getDrLocationsOptionsModel.InstanceID = core.StringPtr("123456d3-1122-3344-b67d-4389b44b7bf9") getDrLocationsOptionsModel.AcceptLanguage = core.StringPtr("testString") - getDrLocationsOptionsModel.IfNoneMatch = core.StringPtr("testString") getDrLocationsOptionsModel.Headers = map[string]string{"x-custom-header": "x-custom-value"} // Invoke operation with empty URL (negative test) err := drAutomationServiceService.SetServiceURL("") @@ -1387,9 +1336,8 @@ var _ = Describe(`DrAutomationServiceV1`, func() { // Construct an instance of the GetDrLocationsOptions model getDrLocationsOptionsModel := new(drautomationservicev1.GetDrLocationsOptions) - getDrLocationsOptionsModel.InstanceID = core.StringPtr("crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::") + getDrLocationsOptionsModel.InstanceID = core.StringPtr("123456d3-1122-3344-b67d-4389b44b7bf9") getDrLocationsOptionsModel.AcceptLanguage = core.StringPtr("testString") - getDrLocationsOptionsModel.IfNoneMatch = core.StringPtr("testString") getDrLocationsOptionsModel.Headers = map[string]string{"x-custom-header": "x-custom-value"} // Invoke operation @@ -1406,7 +1354,7 @@ var _ = Describe(`DrAutomationServiceV1`, func() { }) }) Describe(`GetDrManagedVM(getDrManagedVMOptions *GetDrManagedVMOptions) - Operation response error`, func() { - getDrManagedVMPath := "/drautomation/v1/dr_managed_vms/crn:v1:staging:public:power-dr-automation:global:a%2Fa123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::" + getDrManagedVMPath := "/drautomation/v1/dr_managed_vms/123456d3-1122-3344-b67d-4389b44b7bf9" Context(`Using mock server endpoint with invalid JSON response`, func() { BeforeEach(func() { testServer = httptest.NewServer(http.HandlerFunc(func(res http.ResponseWriter, req *http.Request) { @@ -1417,8 +1365,6 @@ var _ = Describe(`DrAutomationServiceV1`, func() { Expect(req.Method).To(Equal("GET")) Expect(req.Header["Accept-Language"]).ToNot(BeNil()) Expect(req.Header["Accept-Language"][0]).To(Equal(fmt.Sprintf("%v", "testString"))) - Expect(req.Header["If-None-Match"]).ToNot(BeNil()) - Expect(req.Header["If-None-Match"][0]).To(Equal(fmt.Sprintf("%v", "testString"))) res.Header().Set("Content-type", "application/json") res.WriteHeader(200) fmt.Fprint(res, `} this is not valid json {`) @@ -1434,9 +1380,8 @@ var _ = Describe(`DrAutomationServiceV1`, func() { // Construct an instance of the GetDrManagedVMOptions model getDrManagedVMOptionsModel := new(drautomationservicev1.GetDrManagedVMOptions) - getDrManagedVMOptionsModel.InstanceID = core.StringPtr("crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::") + getDrManagedVMOptionsModel.InstanceID = core.StringPtr("123456d3-1122-3344-b67d-4389b44b7bf9") getDrManagedVMOptionsModel.AcceptLanguage = core.StringPtr("testString") - getDrManagedVMOptionsModel.IfNoneMatch = core.StringPtr("testString") getDrManagedVMOptionsModel.Headers = map[string]string{"x-custom-header": "x-custom-value"} // Expect response parsing to fail since we are receiving a text/plain response result, response, operationErr := drAutomationServiceService.GetDrManagedVM(getDrManagedVMOptionsModel) @@ -1457,7 +1402,7 @@ var _ = Describe(`DrAutomationServiceV1`, func() { }) }) Describe(`GetDrManagedVM(getDrManagedVMOptions *GetDrManagedVMOptions)`, func() { - getDrManagedVMPath := "/drautomation/v1/dr_managed_vms/crn:v1:staging:public:power-dr-automation:global:a%2Fa123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::" + getDrManagedVMPath := "/drautomation/v1/dr_managed_vms/123456d3-1122-3344-b67d-4389b44b7bf9" Context(`Using mock server endpoint with timeout`, func() { BeforeEach(func() { testServer = httptest.NewServer(http.HandlerFunc(func(res http.ResponseWriter, req *http.Request) { @@ -1469,8 +1414,6 @@ var _ = Describe(`DrAutomationServiceV1`, func() { Expect(req.Header["Accept-Language"]).ToNot(BeNil()) Expect(req.Header["Accept-Language"][0]).To(Equal(fmt.Sprintf("%v", "testString"))) - Expect(req.Header["If-None-Match"]).ToNot(BeNil()) - Expect(req.Header["If-None-Match"][0]).To(Equal(fmt.Sprintf("%v", "testString"))) // Sleep a short time to support a timeout test time.Sleep(100 * time.Millisecond) @@ -1491,9 +1434,8 @@ var _ = Describe(`DrAutomationServiceV1`, func() { // Construct an instance of the GetDrManagedVMOptions model getDrManagedVMOptionsModel := new(drautomationservicev1.GetDrManagedVMOptions) - getDrManagedVMOptionsModel.InstanceID = core.StringPtr("crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::") + getDrManagedVMOptionsModel.InstanceID = core.StringPtr("123456d3-1122-3344-b67d-4389b44b7bf9") getDrManagedVMOptionsModel.AcceptLanguage = core.StringPtr("testString") - getDrManagedVMOptionsModel.IfNoneMatch = core.StringPtr("testString") getDrManagedVMOptionsModel.Headers = map[string]string{"x-custom-header": "x-custom-value"} // Invoke operation with a Context to test a timeout error @@ -1532,8 +1474,6 @@ var _ = Describe(`DrAutomationServiceV1`, func() { Expect(req.Header["Accept-Language"]).ToNot(BeNil()) Expect(req.Header["Accept-Language"][0]).To(Equal(fmt.Sprintf("%v", "testString"))) - Expect(req.Header["If-None-Match"]).ToNot(BeNil()) - Expect(req.Header["If-None-Match"][0]).To(Equal(fmt.Sprintf("%v", "testString"))) // Set mock response res.Header().Set("Content-type", "application/json") res.WriteHeader(200) @@ -1556,9 +1496,8 @@ var _ = Describe(`DrAutomationServiceV1`, func() { // Construct an instance of the GetDrManagedVMOptions model getDrManagedVMOptionsModel := new(drautomationservicev1.GetDrManagedVMOptions) - getDrManagedVMOptionsModel.InstanceID = core.StringPtr("crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::") + getDrManagedVMOptionsModel.InstanceID = core.StringPtr("123456d3-1122-3344-b67d-4389b44b7bf9") getDrManagedVMOptionsModel.AcceptLanguage = core.StringPtr("testString") - getDrManagedVMOptionsModel.IfNoneMatch = core.StringPtr("testString") getDrManagedVMOptionsModel.Headers = map[string]string{"x-custom-header": "x-custom-value"} // Invoke operation with valid options model (positive test) @@ -1578,9 +1517,8 @@ var _ = Describe(`DrAutomationServiceV1`, func() { // Construct an instance of the GetDrManagedVMOptions model getDrManagedVMOptionsModel := new(drautomationservicev1.GetDrManagedVMOptions) - getDrManagedVMOptionsModel.InstanceID = core.StringPtr("crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::") + getDrManagedVMOptionsModel.InstanceID = core.StringPtr("123456d3-1122-3344-b67d-4389b44b7bf9") getDrManagedVMOptionsModel.AcceptLanguage = core.StringPtr("testString") - getDrManagedVMOptionsModel.IfNoneMatch = core.StringPtr("testString") getDrManagedVMOptionsModel.Headers = map[string]string{"x-custom-header": "x-custom-value"} // Invoke operation with empty URL (negative test) err := drAutomationServiceService.SetServiceURL("") @@ -1621,9 +1559,8 @@ var _ = Describe(`DrAutomationServiceV1`, func() { // Construct an instance of the GetDrManagedVMOptions model getDrManagedVMOptionsModel := new(drautomationservicev1.GetDrManagedVMOptions) - getDrManagedVMOptionsModel.InstanceID = core.StringPtr("crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::") + getDrManagedVMOptionsModel.InstanceID = core.StringPtr("123456d3-1122-3344-b67d-4389b44b7bf9") getDrManagedVMOptionsModel.AcceptLanguage = core.StringPtr("testString") - getDrManagedVMOptionsModel.IfNoneMatch = core.StringPtr("testString") getDrManagedVMOptionsModel.Headers = map[string]string{"x-custom-header": "x-custom-value"} // Invoke operation @@ -1640,7 +1577,7 @@ var _ = Describe(`DrAutomationServiceV1`, func() { }) }) Describe(`GetDrSummary(getDrSummaryOptions *GetDrSummaryOptions) - Operation response error`, func() { - getDrSummaryPath := "/drautomation/v1/dr_summary/crn:v1:staging:public:power-dr-automation:global:a%2Fa123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::" + getDrSummaryPath := "/drautomation/v1/dr_summary/123456d3-1122-3344-b67d-4389b44b7bf9" Context(`Using mock server endpoint with invalid JSON response`, func() { BeforeEach(func() { testServer = httptest.NewServer(http.HandlerFunc(func(res http.ResponseWriter, req *http.Request) { @@ -1651,8 +1588,6 @@ var _ = Describe(`DrAutomationServiceV1`, func() { Expect(req.Method).To(Equal("GET")) Expect(req.Header["Accept-Language"]).ToNot(BeNil()) Expect(req.Header["Accept-Language"][0]).To(Equal(fmt.Sprintf("%v", "testString"))) - Expect(req.Header["If-None-Match"]).ToNot(BeNil()) - Expect(req.Header["If-None-Match"][0]).To(Equal(fmt.Sprintf("%v", "testString"))) res.Header().Set("Content-type", "application/json") res.WriteHeader(200) fmt.Fprint(res, `} this is not valid json {`) @@ -1668,9 +1603,8 @@ var _ = Describe(`DrAutomationServiceV1`, func() { // Construct an instance of the GetDrSummaryOptions model getDrSummaryOptionsModel := new(drautomationservicev1.GetDrSummaryOptions) - getDrSummaryOptionsModel.InstanceID = core.StringPtr("crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::") + getDrSummaryOptionsModel.InstanceID = core.StringPtr("123456d3-1122-3344-b67d-4389b44b7bf9") getDrSummaryOptionsModel.AcceptLanguage = core.StringPtr("testString") - getDrSummaryOptionsModel.IfNoneMatch = core.StringPtr("testString") getDrSummaryOptionsModel.Headers = map[string]string{"x-custom-header": "x-custom-value"} // Expect response parsing to fail since we are receiving a text/plain response result, response, operationErr := drAutomationServiceService.GetDrSummary(getDrSummaryOptionsModel) @@ -1691,7 +1625,7 @@ var _ = Describe(`DrAutomationServiceV1`, func() { }) }) Describe(`GetDrSummary(getDrSummaryOptions *GetDrSummaryOptions)`, func() { - getDrSummaryPath := "/drautomation/v1/dr_summary/crn:v1:staging:public:power-dr-automation:global:a%2Fa123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::" + getDrSummaryPath := "/drautomation/v1/dr_summary/123456d3-1122-3344-b67d-4389b44b7bf9" Context(`Using mock server endpoint with timeout`, func() { BeforeEach(func() { testServer = httptest.NewServer(http.HandlerFunc(func(res http.ResponseWriter, req *http.Request) { @@ -1703,8 +1637,6 @@ var _ = Describe(`DrAutomationServiceV1`, func() { Expect(req.Header["Accept-Language"]).ToNot(BeNil()) Expect(req.Header["Accept-Language"][0]).To(Equal(fmt.Sprintf("%v", "testString"))) - Expect(req.Header["If-None-Match"]).ToNot(BeNil()) - Expect(req.Header["If-None-Match"][0]).To(Equal(fmt.Sprintf("%v", "testString"))) // Sleep a short time to support a timeout test time.Sleep(100 * time.Millisecond) @@ -1725,9 +1657,8 @@ var _ = Describe(`DrAutomationServiceV1`, func() { // Construct an instance of the GetDrSummaryOptions model getDrSummaryOptionsModel := new(drautomationservicev1.GetDrSummaryOptions) - getDrSummaryOptionsModel.InstanceID = core.StringPtr("crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::") + getDrSummaryOptionsModel.InstanceID = core.StringPtr("123456d3-1122-3344-b67d-4389b44b7bf9") getDrSummaryOptionsModel.AcceptLanguage = core.StringPtr("testString") - getDrSummaryOptionsModel.IfNoneMatch = core.StringPtr("testString") getDrSummaryOptionsModel.Headers = map[string]string{"x-custom-header": "x-custom-value"} // Invoke operation with a Context to test a timeout error @@ -1766,8 +1697,6 @@ var _ = Describe(`DrAutomationServiceV1`, func() { Expect(req.Header["Accept-Language"]).ToNot(BeNil()) Expect(req.Header["Accept-Language"][0]).To(Equal(fmt.Sprintf("%v", "testString"))) - Expect(req.Header["If-None-Match"]).ToNot(BeNil()) - Expect(req.Header["If-None-Match"][0]).To(Equal(fmt.Sprintf("%v", "testString"))) // Set mock response res.Header().Set("Content-type", "application/json") res.WriteHeader(200) @@ -1790,9 +1719,8 @@ var _ = Describe(`DrAutomationServiceV1`, func() { // Construct an instance of the GetDrSummaryOptions model getDrSummaryOptionsModel := new(drautomationservicev1.GetDrSummaryOptions) - getDrSummaryOptionsModel.InstanceID = core.StringPtr("crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::") + getDrSummaryOptionsModel.InstanceID = core.StringPtr("123456d3-1122-3344-b67d-4389b44b7bf9") getDrSummaryOptionsModel.AcceptLanguage = core.StringPtr("testString") - getDrSummaryOptionsModel.IfNoneMatch = core.StringPtr("testString") getDrSummaryOptionsModel.Headers = map[string]string{"x-custom-header": "x-custom-value"} // Invoke operation with valid options model (positive test) @@ -1812,9 +1740,8 @@ var _ = Describe(`DrAutomationServiceV1`, func() { // Construct an instance of the GetDrSummaryOptions model getDrSummaryOptionsModel := new(drautomationservicev1.GetDrSummaryOptions) - getDrSummaryOptionsModel.InstanceID = core.StringPtr("crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::") + getDrSummaryOptionsModel.InstanceID = core.StringPtr("123456d3-1122-3344-b67d-4389b44b7bf9") getDrSummaryOptionsModel.AcceptLanguage = core.StringPtr("testString") - getDrSummaryOptionsModel.IfNoneMatch = core.StringPtr("testString") getDrSummaryOptionsModel.Headers = map[string]string{"x-custom-header": "x-custom-value"} // Invoke operation with empty URL (negative test) err := drAutomationServiceService.SetServiceURL("") @@ -1855,9 +1782,8 @@ var _ = Describe(`DrAutomationServiceV1`, func() { // Construct an instance of the GetDrSummaryOptions model getDrSummaryOptionsModel := new(drautomationservicev1.GetDrSummaryOptions) - getDrSummaryOptionsModel.InstanceID = core.StringPtr("crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::") + getDrSummaryOptionsModel.InstanceID = core.StringPtr("123456d3-1122-3344-b67d-4389b44b7bf9") getDrSummaryOptionsModel.AcceptLanguage = core.StringPtr("testString") - getDrSummaryOptionsModel.IfNoneMatch = core.StringPtr("testString") getDrSummaryOptionsModel.Headers = map[string]string{"x-custom-header": "x-custom-value"} // Invoke operation @@ -1874,7 +1800,7 @@ var _ = Describe(`DrAutomationServiceV1`, func() { }) }) Describe(`GetMachineType(getMachineTypeOptions *GetMachineTypeOptions) - Operation response error`, func() { - getMachineTypePath := "/drautomation/v1/machinetypes/crn:v1:staging:public:power-dr-automation:global:a%2Fa123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::" + getMachineTypePath := "/drautomation/v1/machinetypes/123456d3-1122-3344-b67d-4389b44b7bf9" Context(`Using mock server endpoint with invalid JSON response`, func() { BeforeEach(func() { testServer = httptest.NewServer(http.HandlerFunc(func(res http.ResponseWriter, req *http.Request) { @@ -1885,8 +1811,6 @@ var _ = Describe(`DrAutomationServiceV1`, func() { Expect(req.Method).To(Equal("GET")) Expect(req.Header["Accept-Language"]).ToNot(BeNil()) Expect(req.Header["Accept-Language"][0]).To(Equal(fmt.Sprintf("%v", "testString"))) - Expect(req.Header["If-None-Match"]).ToNot(BeNil()) - Expect(req.Header["If-None-Match"][0]).To(Equal(fmt.Sprintf("%v", "testString"))) Expect(req.URL.Query()["primary_workspace_name"]).To(Equal([]string{"Test-workspace-wdc06"})) Expect(req.URL.Query()["standby_workspace_name"]).To(Equal([]string{"Test-workspace-wdc07"})) res.Header().Set("Content-type", "application/json") @@ -1904,10 +1828,9 @@ var _ = Describe(`DrAutomationServiceV1`, func() { // Construct an instance of the GetMachineTypeOptions model getMachineTypeOptionsModel := new(drautomationservicev1.GetMachineTypeOptions) - getMachineTypeOptionsModel.InstanceID = core.StringPtr("crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::") + getMachineTypeOptionsModel.InstanceID = core.StringPtr("123456d3-1122-3344-b67d-4389b44b7bf9") getMachineTypeOptionsModel.PrimaryWorkspaceName = core.StringPtr("Test-workspace-wdc06") getMachineTypeOptionsModel.AcceptLanguage = core.StringPtr("testString") - getMachineTypeOptionsModel.IfNoneMatch = core.StringPtr("testString") getMachineTypeOptionsModel.StandbyWorkspaceName = core.StringPtr("Test-workspace-wdc07") getMachineTypeOptionsModel.Headers = map[string]string{"x-custom-header": "x-custom-value"} // Expect response parsing to fail since we are receiving a text/plain response @@ -1929,7 +1852,7 @@ var _ = Describe(`DrAutomationServiceV1`, func() { }) }) Describe(`GetMachineType(getMachineTypeOptions *GetMachineTypeOptions)`, func() { - getMachineTypePath := "/drautomation/v1/machinetypes/crn:v1:staging:public:power-dr-automation:global:a%2Fa123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::" + getMachineTypePath := "/drautomation/v1/machinetypes/123456d3-1122-3344-b67d-4389b44b7bf9" Context(`Using mock server endpoint with timeout`, func() { BeforeEach(func() { testServer = httptest.NewServer(http.HandlerFunc(func(res http.ResponseWriter, req *http.Request) { @@ -1941,8 +1864,6 @@ var _ = Describe(`DrAutomationServiceV1`, func() { Expect(req.Header["Accept-Language"]).ToNot(BeNil()) Expect(req.Header["Accept-Language"][0]).To(Equal(fmt.Sprintf("%v", "testString"))) - Expect(req.Header["If-None-Match"]).ToNot(BeNil()) - Expect(req.Header["If-None-Match"][0]).To(Equal(fmt.Sprintf("%v", "testString"))) Expect(req.URL.Query()["primary_workspace_name"]).To(Equal([]string{"Test-workspace-wdc06"})) Expect(req.URL.Query()["standby_workspace_name"]).To(Equal([]string{"Test-workspace-wdc07"})) // Sleep a short time to support a timeout test @@ -1965,10 +1886,9 @@ var _ = Describe(`DrAutomationServiceV1`, func() { // Construct an instance of the GetMachineTypeOptions model getMachineTypeOptionsModel := new(drautomationservicev1.GetMachineTypeOptions) - getMachineTypeOptionsModel.InstanceID = core.StringPtr("crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::") + getMachineTypeOptionsModel.InstanceID = core.StringPtr("123456d3-1122-3344-b67d-4389b44b7bf9") getMachineTypeOptionsModel.PrimaryWorkspaceName = core.StringPtr("Test-workspace-wdc06") getMachineTypeOptionsModel.AcceptLanguage = core.StringPtr("testString") - getMachineTypeOptionsModel.IfNoneMatch = core.StringPtr("testString") getMachineTypeOptionsModel.StandbyWorkspaceName = core.StringPtr("Test-workspace-wdc07") getMachineTypeOptionsModel.Headers = map[string]string{"x-custom-header": "x-custom-value"} @@ -2008,8 +1928,6 @@ var _ = Describe(`DrAutomationServiceV1`, func() { Expect(req.Header["Accept-Language"]).ToNot(BeNil()) Expect(req.Header["Accept-Language"][0]).To(Equal(fmt.Sprintf("%v", "testString"))) - Expect(req.Header["If-None-Match"]).ToNot(BeNil()) - Expect(req.Header["If-None-Match"][0]).To(Equal(fmt.Sprintf("%v", "testString"))) Expect(req.URL.Query()["primary_workspace_name"]).To(Equal([]string{"Test-workspace-wdc06"})) Expect(req.URL.Query()["standby_workspace_name"]).To(Equal([]string{"Test-workspace-wdc07"})) // Set mock response @@ -2034,10 +1952,9 @@ var _ = Describe(`DrAutomationServiceV1`, func() { // Construct an instance of the GetMachineTypeOptions model getMachineTypeOptionsModel := new(drautomationservicev1.GetMachineTypeOptions) - getMachineTypeOptionsModel.InstanceID = core.StringPtr("crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::") + getMachineTypeOptionsModel.InstanceID = core.StringPtr("123456d3-1122-3344-b67d-4389b44b7bf9") getMachineTypeOptionsModel.PrimaryWorkspaceName = core.StringPtr("Test-workspace-wdc06") getMachineTypeOptionsModel.AcceptLanguage = core.StringPtr("testString") - getMachineTypeOptionsModel.IfNoneMatch = core.StringPtr("testString") getMachineTypeOptionsModel.StandbyWorkspaceName = core.StringPtr("Test-workspace-wdc07") getMachineTypeOptionsModel.Headers = map[string]string{"x-custom-header": "x-custom-value"} @@ -2058,10 +1975,9 @@ var _ = Describe(`DrAutomationServiceV1`, func() { // Construct an instance of the GetMachineTypeOptions model getMachineTypeOptionsModel := new(drautomationservicev1.GetMachineTypeOptions) - getMachineTypeOptionsModel.InstanceID = core.StringPtr("crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::") + getMachineTypeOptionsModel.InstanceID = core.StringPtr("123456d3-1122-3344-b67d-4389b44b7bf9") getMachineTypeOptionsModel.PrimaryWorkspaceName = core.StringPtr("Test-workspace-wdc06") getMachineTypeOptionsModel.AcceptLanguage = core.StringPtr("testString") - getMachineTypeOptionsModel.IfNoneMatch = core.StringPtr("testString") getMachineTypeOptionsModel.StandbyWorkspaceName = core.StringPtr("Test-workspace-wdc07") getMachineTypeOptionsModel.Headers = map[string]string{"x-custom-header": "x-custom-value"} // Invoke operation with empty URL (negative test) @@ -2103,10 +2019,9 @@ var _ = Describe(`DrAutomationServiceV1`, func() { // Construct an instance of the GetMachineTypeOptions model getMachineTypeOptionsModel := new(drautomationservicev1.GetMachineTypeOptions) - getMachineTypeOptionsModel.InstanceID = core.StringPtr("crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::") + getMachineTypeOptionsModel.InstanceID = core.StringPtr("123456d3-1122-3344-b67d-4389b44b7bf9") getMachineTypeOptionsModel.PrimaryWorkspaceName = core.StringPtr("Test-workspace-wdc06") getMachineTypeOptionsModel.AcceptLanguage = core.StringPtr("testString") - getMachineTypeOptionsModel.IfNoneMatch = core.StringPtr("testString") getMachineTypeOptionsModel.StandbyWorkspaceName = core.StringPtr("Test-workspace-wdc07") getMachineTypeOptionsModel.Headers = map[string]string{"x-custom-header": "x-custom-value"} @@ -2124,7 +2039,7 @@ var _ = Describe(`DrAutomationServiceV1`, func() { }) }) Describe(`GetPowervsWorkspaces(getPowervsWorkspacesOptions *GetPowervsWorkspacesOptions) - Operation response error`, func() { - getPowervsWorkspacesPath := "/drautomation/v1/powervs_workspaces/crn:v1:staging:public:power-dr-automation:global:a%2Fa123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::" + getPowervsWorkspacesPath := "/drautomation/v1/powervs_workspaces/123456d3-1122-3344-b67d-4389b44b7bf9" Context(`Using mock server endpoint with invalid JSON response`, func() { BeforeEach(func() { testServer = httptest.NewServer(http.HandlerFunc(func(res http.ResponseWriter, req *http.Request) { @@ -2133,8 +2048,6 @@ var _ = Describe(`DrAutomationServiceV1`, func() { // Verify the contents of the request Expect(req.URL.EscapedPath()).To(Equal(getPowervsWorkspacesPath)) Expect(req.Method).To(Equal("GET")) - Expect(req.Header["If-None-Match"]).ToNot(BeNil()) - Expect(req.Header["If-None-Match"][0]).To(Equal(fmt.Sprintf("%v", "testString"))) Expect(req.URL.Query()["location_id"]).To(Equal([]string{"testString"})) res.Header().Set("Content-type", "application/json") res.WriteHeader(200) @@ -2151,9 +2064,8 @@ var _ = Describe(`DrAutomationServiceV1`, func() { // Construct an instance of the GetPowervsWorkspacesOptions model getPowervsWorkspacesOptionsModel := new(drautomationservicev1.GetPowervsWorkspacesOptions) - getPowervsWorkspacesOptionsModel.InstanceID = core.StringPtr("crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::") + getPowervsWorkspacesOptionsModel.InstanceID = core.StringPtr("123456d3-1122-3344-b67d-4389b44b7bf9") getPowervsWorkspacesOptionsModel.LocationID = core.StringPtr("testString") - getPowervsWorkspacesOptionsModel.IfNoneMatch = core.StringPtr("testString") getPowervsWorkspacesOptionsModel.Headers = map[string]string{"x-custom-header": "x-custom-value"} // Expect response parsing to fail since we are receiving a text/plain response result, response, operationErr := drAutomationServiceService.GetPowervsWorkspaces(getPowervsWorkspacesOptionsModel) @@ -2174,7 +2086,7 @@ var _ = Describe(`DrAutomationServiceV1`, func() { }) }) Describe(`GetPowervsWorkspaces(getPowervsWorkspacesOptions *GetPowervsWorkspacesOptions)`, func() { - getPowervsWorkspacesPath := "/drautomation/v1/powervs_workspaces/crn:v1:staging:public:power-dr-automation:global:a%2Fa123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::" + getPowervsWorkspacesPath := "/drautomation/v1/powervs_workspaces/123456d3-1122-3344-b67d-4389b44b7bf9" Context(`Using mock server endpoint with timeout`, func() { BeforeEach(func() { testServer = httptest.NewServer(http.HandlerFunc(func(res http.ResponseWriter, req *http.Request) { @@ -2184,8 +2096,6 @@ var _ = Describe(`DrAutomationServiceV1`, func() { Expect(req.URL.EscapedPath()).To(Equal(getPowervsWorkspacesPath)) Expect(req.Method).To(Equal("GET")) - Expect(req.Header["If-None-Match"]).ToNot(BeNil()) - Expect(req.Header["If-None-Match"][0]).To(Equal(fmt.Sprintf("%v", "testString"))) Expect(req.URL.Query()["location_id"]).To(Equal([]string{"testString"})) // Sleep a short time to support a timeout test time.Sleep(100 * time.Millisecond) @@ -2207,9 +2117,8 @@ var _ = Describe(`DrAutomationServiceV1`, func() { // Construct an instance of the GetPowervsWorkspacesOptions model getPowervsWorkspacesOptionsModel := new(drautomationservicev1.GetPowervsWorkspacesOptions) - getPowervsWorkspacesOptionsModel.InstanceID = core.StringPtr("crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::") + getPowervsWorkspacesOptionsModel.InstanceID = core.StringPtr("123456d3-1122-3344-b67d-4389b44b7bf9") getPowervsWorkspacesOptionsModel.LocationID = core.StringPtr("testString") - getPowervsWorkspacesOptionsModel.IfNoneMatch = core.StringPtr("testString") getPowervsWorkspacesOptionsModel.Headers = map[string]string{"x-custom-header": "x-custom-value"} // Invoke operation with a Context to test a timeout error @@ -2246,8 +2155,6 @@ var _ = Describe(`DrAutomationServiceV1`, func() { Expect(req.URL.EscapedPath()).To(Equal(getPowervsWorkspacesPath)) Expect(req.Method).To(Equal("GET")) - Expect(req.Header["If-None-Match"]).ToNot(BeNil()) - Expect(req.Header["If-None-Match"][0]).To(Equal(fmt.Sprintf("%v", "testString"))) Expect(req.URL.Query()["location_id"]).To(Equal([]string{"testString"})) // Set mock response res.Header().Set("Content-type", "application/json") @@ -2271,9 +2178,8 @@ var _ = Describe(`DrAutomationServiceV1`, func() { // Construct an instance of the GetPowervsWorkspacesOptions model getPowervsWorkspacesOptionsModel := new(drautomationservicev1.GetPowervsWorkspacesOptions) - getPowervsWorkspacesOptionsModel.InstanceID = core.StringPtr("crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::") + getPowervsWorkspacesOptionsModel.InstanceID = core.StringPtr("123456d3-1122-3344-b67d-4389b44b7bf9") getPowervsWorkspacesOptionsModel.LocationID = core.StringPtr("testString") - getPowervsWorkspacesOptionsModel.IfNoneMatch = core.StringPtr("testString") getPowervsWorkspacesOptionsModel.Headers = map[string]string{"x-custom-header": "x-custom-value"} // Invoke operation with valid options model (positive test) @@ -2293,9 +2199,8 @@ var _ = Describe(`DrAutomationServiceV1`, func() { // Construct an instance of the GetPowervsWorkspacesOptions model getPowervsWorkspacesOptionsModel := new(drautomationservicev1.GetPowervsWorkspacesOptions) - getPowervsWorkspacesOptionsModel.InstanceID = core.StringPtr("crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::") + getPowervsWorkspacesOptionsModel.InstanceID = core.StringPtr("123456d3-1122-3344-b67d-4389b44b7bf9") getPowervsWorkspacesOptionsModel.LocationID = core.StringPtr("testString") - getPowervsWorkspacesOptionsModel.IfNoneMatch = core.StringPtr("testString") getPowervsWorkspacesOptionsModel.Headers = map[string]string{"x-custom-header": "x-custom-value"} // Invoke operation with empty URL (negative test) err := drAutomationServiceService.SetServiceURL("") @@ -2336,9 +2241,8 @@ var _ = Describe(`DrAutomationServiceV1`, func() { // Construct an instance of the GetPowervsWorkspacesOptions model getPowervsWorkspacesOptionsModel := new(drautomationservicev1.GetPowervsWorkspacesOptions) - getPowervsWorkspacesOptionsModel.InstanceID = core.StringPtr("crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::") + getPowervsWorkspacesOptionsModel.InstanceID = core.StringPtr("123456d3-1122-3344-b67d-4389b44b7bf9") getPowervsWorkspacesOptionsModel.LocationID = core.StringPtr("testString") - getPowervsWorkspacesOptionsModel.IfNoneMatch = core.StringPtr("testString") getPowervsWorkspacesOptionsModel.Headers = map[string]string{"x-custom-header": "x-custom-value"} // Invoke operation @@ -2355,7 +2259,7 @@ var _ = Describe(`DrAutomationServiceV1`, func() { }) }) Describe(`GetManageDr(getManageDrOptions *GetManageDrOptions) - Operation response error`, func() { - getManageDrPath := "/drautomation/v1/manage_dr/crn:v1:staging:public:power-dr-automation:global:a%2Fa123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::" + getManageDrPath := "/drautomation/v1/manage_dr/123456d3-1122-3344-b67d-4389b44b7bf9" Context(`Using mock server endpoint with invalid JSON response`, func() { BeforeEach(func() { testServer = httptest.NewServer(http.HandlerFunc(func(res http.ResponseWriter, req *http.Request) { @@ -2366,8 +2270,6 @@ var _ = Describe(`DrAutomationServiceV1`, func() { Expect(req.Method).To(Equal("GET")) Expect(req.Header["Accept-Language"]).ToNot(BeNil()) Expect(req.Header["Accept-Language"][0]).To(Equal(fmt.Sprintf("%v", "testString"))) - Expect(req.Header["If-None-Match"]).ToNot(BeNil()) - Expect(req.Header["If-None-Match"][0]).To(Equal(fmt.Sprintf("%v", "testString"))) res.Header().Set("Content-type", "application/json") res.WriteHeader(200) fmt.Fprint(res, `} this is not valid json {`) @@ -2383,9 +2285,8 @@ var _ = Describe(`DrAutomationServiceV1`, func() { // Construct an instance of the GetManageDrOptions model getManageDrOptionsModel := new(drautomationservicev1.GetManageDrOptions) - getManageDrOptionsModel.InstanceID = core.StringPtr("crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::") + getManageDrOptionsModel.InstanceID = core.StringPtr("123456d3-1122-3344-b67d-4389b44b7bf9") getManageDrOptionsModel.AcceptLanguage = core.StringPtr("testString") - getManageDrOptionsModel.IfNoneMatch = core.StringPtr("testString") getManageDrOptionsModel.Headers = map[string]string{"x-custom-header": "x-custom-value"} // Expect response parsing to fail since we are receiving a text/plain response result, response, operationErr := drAutomationServiceService.GetManageDr(getManageDrOptionsModel) @@ -2406,7 +2307,7 @@ var _ = Describe(`DrAutomationServiceV1`, func() { }) }) Describe(`GetManageDr(getManageDrOptions *GetManageDrOptions)`, func() { - getManageDrPath := "/drautomation/v1/manage_dr/crn:v1:staging:public:power-dr-automation:global:a%2Fa123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::" + getManageDrPath := "/drautomation/v1/manage_dr/123456d3-1122-3344-b67d-4389b44b7bf9" Context(`Using mock server endpoint with timeout`, func() { BeforeEach(func() { testServer = httptest.NewServer(http.HandlerFunc(func(res http.ResponseWriter, req *http.Request) { @@ -2418,8 +2319,6 @@ var _ = Describe(`DrAutomationServiceV1`, func() { Expect(req.Header["Accept-Language"]).ToNot(BeNil()) Expect(req.Header["Accept-Language"][0]).To(Equal(fmt.Sprintf("%v", "testString"))) - Expect(req.Header["If-None-Match"]).ToNot(BeNil()) - Expect(req.Header["If-None-Match"][0]).To(Equal(fmt.Sprintf("%v", "testString"))) // Sleep a short time to support a timeout test time.Sleep(100 * time.Millisecond) @@ -2440,9 +2339,8 @@ var _ = Describe(`DrAutomationServiceV1`, func() { // Construct an instance of the GetManageDrOptions model getManageDrOptionsModel := new(drautomationservicev1.GetManageDrOptions) - getManageDrOptionsModel.InstanceID = core.StringPtr("crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::") + getManageDrOptionsModel.InstanceID = core.StringPtr("123456d3-1122-3344-b67d-4389b44b7bf9") getManageDrOptionsModel.AcceptLanguage = core.StringPtr("testString") - getManageDrOptionsModel.IfNoneMatch = core.StringPtr("testString") getManageDrOptionsModel.Headers = map[string]string{"x-custom-header": "x-custom-value"} // Invoke operation with a Context to test a timeout error @@ -2481,8 +2379,6 @@ var _ = Describe(`DrAutomationServiceV1`, func() { Expect(req.Header["Accept-Language"]).ToNot(BeNil()) Expect(req.Header["Accept-Language"][0]).To(Equal(fmt.Sprintf("%v", "testString"))) - Expect(req.Header["If-None-Match"]).ToNot(BeNil()) - Expect(req.Header["If-None-Match"][0]).To(Equal(fmt.Sprintf("%v", "testString"))) // Set mock response res.Header().Set("Content-type", "application/json") res.WriteHeader(200) @@ -2505,9 +2401,8 @@ var _ = Describe(`DrAutomationServiceV1`, func() { // Construct an instance of the GetManageDrOptions model getManageDrOptionsModel := new(drautomationservicev1.GetManageDrOptions) - getManageDrOptionsModel.InstanceID = core.StringPtr("crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::") + getManageDrOptionsModel.InstanceID = core.StringPtr("123456d3-1122-3344-b67d-4389b44b7bf9") getManageDrOptionsModel.AcceptLanguage = core.StringPtr("testString") - getManageDrOptionsModel.IfNoneMatch = core.StringPtr("testString") getManageDrOptionsModel.Headers = map[string]string{"x-custom-header": "x-custom-value"} // Invoke operation with valid options model (positive test) @@ -2527,9 +2422,8 @@ var _ = Describe(`DrAutomationServiceV1`, func() { // Construct an instance of the GetManageDrOptions model getManageDrOptionsModel := new(drautomationservicev1.GetManageDrOptions) - getManageDrOptionsModel.InstanceID = core.StringPtr("crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::") + getManageDrOptionsModel.InstanceID = core.StringPtr("123456d3-1122-3344-b67d-4389b44b7bf9") getManageDrOptionsModel.AcceptLanguage = core.StringPtr("testString") - getManageDrOptionsModel.IfNoneMatch = core.StringPtr("testString") getManageDrOptionsModel.Headers = map[string]string{"x-custom-header": "x-custom-value"} // Invoke operation with empty URL (negative test) err := drAutomationServiceService.SetServiceURL("") @@ -2570,9 +2464,8 @@ var _ = Describe(`DrAutomationServiceV1`, func() { // Construct an instance of the GetManageDrOptions model getManageDrOptionsModel := new(drautomationservicev1.GetManageDrOptions) - getManageDrOptionsModel.InstanceID = core.StringPtr("crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::") + getManageDrOptionsModel.InstanceID = core.StringPtr("123456d3-1122-3344-b67d-4389b44b7bf9") getManageDrOptionsModel.AcceptLanguage = core.StringPtr("testString") - getManageDrOptionsModel.IfNoneMatch = core.StringPtr("testString") getManageDrOptionsModel.Headers = map[string]string{"x-custom-header": "x-custom-value"} // Invoke operation @@ -2589,7 +2482,7 @@ var _ = Describe(`DrAutomationServiceV1`, func() { }) }) Describe(`CreateManageDr(createManageDrOptions *CreateManageDrOptions) - Operation response error`, func() { - createManageDrPath := "/drautomation/v1/manage_dr/crn:v1:staging:public:power-dr-automation:global:a%2Fa123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::" + createManageDrPath := "/drautomation/v1/manage_dr/123456d3-1122-3344-b67d-4389b44b7bf9" Context(`Using mock server endpoint with invalid JSON response`, func() { BeforeEach(func() { testServer = httptest.NewServer(http.HandlerFunc(func(res http.ResponseWriter, req *http.Request) { @@ -2600,8 +2493,6 @@ var _ = Describe(`DrAutomationServiceV1`, func() { Expect(req.Method).To(Equal("POST")) Expect(req.Header["Accept-Language"]).ToNot(BeNil()) Expect(req.Header["Accept-Language"][0]).To(Equal(fmt.Sprintf("%v", "testString"))) - Expect(req.Header["If-None-Match"]).ToNot(BeNil()) - Expect(req.Header["If-None-Match"][0]).To(Equal(fmt.Sprintf("%v", "testString"))) Expect(req.URL.Query()["stand_by_redeploy"]).To(Equal([]string{"testString"})) // TODO: Add check for accepts_incomplete query parameter res.Header().Set("Content-type", "application/json") @@ -2619,36 +2510,32 @@ var _ = Describe(`DrAutomationServiceV1`, func() { // Construct an instance of the CreateManageDrOptions model createManageDrOptionsModel := new(drautomationservicev1.CreateManageDrOptions) - createManageDrOptionsModel.InstanceID = core.StringPtr("crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::") - createManageDrOptionsModel.APIKey = core.StringPtr("testString") - createManageDrOptionsModel.ClientID = core.StringPtr("d9f2c83a-97d2-4b14-bf62-8eaecc67a122") - createManageDrOptionsModel.ClientSecret = core.StringPtr("N8lQ4tP2xM1yT5rS8wK6qR9dD7vF1hU4sA3bE2jG0pL9oX7yC") - createManageDrOptionsModel.GUID = core.StringPtr("123e4567-e89b-12d3-a456-426614174000") + createManageDrOptionsModel.InstanceID = core.StringPtr("123456d3-1122-3344-b67d-4389b44b7bf9") createManageDrOptionsModel.LocationID = core.StringPtr("dal10") createManageDrOptionsModel.MachineType = core.StringPtr("bx2-4x16") - createManageDrOptionsModel.OrchestratorHa = core.BoolPtr(true) createManageDrOptionsModel.OrchestratorLocationType = core.StringPtr("off-premises") createManageDrOptionsModel.OrchestratorName = core.StringPtr("adminUser") createManageDrOptionsModel.OrchestratorPassword = core.StringPtr("testString") createManageDrOptionsModel.OrchestratorWorkspaceID = core.StringPtr("orch-workspace-01") - createManageDrOptionsModel.OrchestratorWorkspaceLocation = core.StringPtr("us-south") + createManageDrOptionsModel.APIKey = core.StringPtr("testString") + createManageDrOptionsModel.ClientID = core.StringPtr("abcd-97d2-1234-bf62-8eaecc67a1234") + createManageDrOptionsModel.ClientSecret = core.StringPtr("abcd1234xM1y123wK6qR9123456789bE2jG0pabcdefgh") + createManageDrOptionsModel.GUID = core.StringPtr("123e4567-e89b-12d3-a456-426614174000") + createManageDrOptionsModel.OrchestratorHa = core.BoolPtr(true) createManageDrOptionsModel.ProxyIP = core.StringPtr("10.40.30.10:8888") createManageDrOptionsModel.RegionID = core.StringPtr("us-south") createManageDrOptionsModel.ResourceInstance = core.StringPtr("crn:v1:bluemix:public:resource-controller::res123") - createManageDrOptionsModel.SecondaryWorkspaceID = core.StringPtr("secondary-workspace789") createManageDrOptionsModel.Secret = core.StringPtr("testString") createManageDrOptionsModel.SecretGroup = core.StringPtr("default-secret-group") createManageDrOptionsModel.SSHKeyName = core.StringPtr("my-ssh-key") createManageDrOptionsModel.StandbyMachineType = core.StringPtr("bx2-8x32") createManageDrOptionsModel.StandbyOrchestratorName = core.StringPtr("standbyAdmin") createManageDrOptionsModel.StandbyOrchestratorWorkspaceID = core.StringPtr("orch-standby-02") - createManageDrOptionsModel.StandbyOrchestratorWorkspaceLocation = core.StringPtr("us-east") createManageDrOptionsModel.StandbyTier = core.StringPtr("Premium") createManageDrOptionsModel.TenantName = core.StringPtr("xxx.ibm.com") createManageDrOptionsModel.Tier = core.StringPtr("Standard") createManageDrOptionsModel.StandByRedeploy = core.StringPtr("testString") createManageDrOptionsModel.AcceptLanguage = core.StringPtr("testString") - createManageDrOptionsModel.IfNoneMatch = core.StringPtr("testString") createManageDrOptionsModel.AcceptsIncomplete = core.BoolPtr(true) createManageDrOptionsModel.Headers = map[string]string{"x-custom-header": "x-custom-value"} // Expect response parsing to fail since we are receiving a text/plain response @@ -2670,7 +2557,7 @@ var _ = Describe(`DrAutomationServiceV1`, func() { }) }) Describe(`CreateManageDr(createManageDrOptions *CreateManageDrOptions)`, func() { - createManageDrPath := "/drautomation/v1/manage_dr/crn:v1:staging:public:power-dr-automation:global:a%2Fa123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::" + createManageDrPath := "/drautomation/v1/manage_dr/123456d3-1122-3344-b67d-4389b44b7bf9" Context(`Using mock server endpoint with timeout`, func() { BeforeEach(func() { testServer = httptest.NewServer(http.HandlerFunc(func(res http.ResponseWriter, req *http.Request) { @@ -2698,8 +2585,6 @@ var _ = Describe(`DrAutomationServiceV1`, func() { Expect(req.Header["Accept-Language"]).ToNot(BeNil()) Expect(req.Header["Accept-Language"][0]).To(Equal(fmt.Sprintf("%v", "testString"))) - Expect(req.Header["If-None-Match"]).ToNot(BeNil()) - Expect(req.Header["If-None-Match"][0]).To(Equal(fmt.Sprintf("%v", "testString"))) Expect(req.URL.Query()["stand_by_redeploy"]).To(Equal([]string{"testString"})) // TODO: Add check for accepts_incomplete query parameter // Sleep a short time to support a timeout test @@ -2722,36 +2607,32 @@ var _ = Describe(`DrAutomationServiceV1`, func() { // Construct an instance of the CreateManageDrOptions model createManageDrOptionsModel := new(drautomationservicev1.CreateManageDrOptions) - createManageDrOptionsModel.InstanceID = core.StringPtr("crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::") - createManageDrOptionsModel.APIKey = core.StringPtr("testString") - createManageDrOptionsModel.ClientID = core.StringPtr("d9f2c83a-97d2-4b14-bf62-8eaecc67a122") - createManageDrOptionsModel.ClientSecret = core.StringPtr("N8lQ4tP2xM1yT5rS8wK6qR9dD7vF1hU4sA3bE2jG0pL9oX7yC") - createManageDrOptionsModel.GUID = core.StringPtr("123e4567-e89b-12d3-a456-426614174000") + createManageDrOptionsModel.InstanceID = core.StringPtr("123456d3-1122-3344-b67d-4389b44b7bf9") createManageDrOptionsModel.LocationID = core.StringPtr("dal10") createManageDrOptionsModel.MachineType = core.StringPtr("bx2-4x16") - createManageDrOptionsModel.OrchestratorHa = core.BoolPtr(true) createManageDrOptionsModel.OrchestratorLocationType = core.StringPtr("off-premises") createManageDrOptionsModel.OrchestratorName = core.StringPtr("adminUser") createManageDrOptionsModel.OrchestratorPassword = core.StringPtr("testString") createManageDrOptionsModel.OrchestratorWorkspaceID = core.StringPtr("orch-workspace-01") - createManageDrOptionsModel.OrchestratorWorkspaceLocation = core.StringPtr("us-south") + createManageDrOptionsModel.APIKey = core.StringPtr("testString") + createManageDrOptionsModel.ClientID = core.StringPtr("abcd-97d2-1234-bf62-8eaecc67a1234") + createManageDrOptionsModel.ClientSecret = core.StringPtr("abcd1234xM1y123wK6qR9123456789bE2jG0pabcdefgh") + createManageDrOptionsModel.GUID = core.StringPtr("123e4567-e89b-12d3-a456-426614174000") + createManageDrOptionsModel.OrchestratorHa = core.BoolPtr(true) createManageDrOptionsModel.ProxyIP = core.StringPtr("10.40.30.10:8888") createManageDrOptionsModel.RegionID = core.StringPtr("us-south") createManageDrOptionsModel.ResourceInstance = core.StringPtr("crn:v1:bluemix:public:resource-controller::res123") - createManageDrOptionsModel.SecondaryWorkspaceID = core.StringPtr("secondary-workspace789") createManageDrOptionsModel.Secret = core.StringPtr("testString") createManageDrOptionsModel.SecretGroup = core.StringPtr("default-secret-group") createManageDrOptionsModel.SSHKeyName = core.StringPtr("my-ssh-key") createManageDrOptionsModel.StandbyMachineType = core.StringPtr("bx2-8x32") createManageDrOptionsModel.StandbyOrchestratorName = core.StringPtr("standbyAdmin") createManageDrOptionsModel.StandbyOrchestratorWorkspaceID = core.StringPtr("orch-standby-02") - createManageDrOptionsModel.StandbyOrchestratorWorkspaceLocation = core.StringPtr("us-east") createManageDrOptionsModel.StandbyTier = core.StringPtr("Premium") createManageDrOptionsModel.TenantName = core.StringPtr("xxx.ibm.com") createManageDrOptionsModel.Tier = core.StringPtr("Standard") createManageDrOptionsModel.StandByRedeploy = core.StringPtr("testString") createManageDrOptionsModel.AcceptLanguage = core.StringPtr("testString") - createManageDrOptionsModel.IfNoneMatch = core.StringPtr("testString") createManageDrOptionsModel.AcceptsIncomplete = core.BoolPtr(true) createManageDrOptionsModel.Headers = map[string]string{"x-custom-header": "x-custom-value"} @@ -2807,8 +2688,6 @@ var _ = Describe(`DrAutomationServiceV1`, func() { Expect(req.Header["Accept-Language"]).ToNot(BeNil()) Expect(req.Header["Accept-Language"][0]).To(Equal(fmt.Sprintf("%v", "testString"))) - Expect(req.Header["If-None-Match"]).ToNot(BeNil()) - Expect(req.Header["If-None-Match"][0]).To(Equal(fmt.Sprintf("%v", "testString"))) Expect(req.URL.Query()["stand_by_redeploy"]).To(Equal([]string{"testString"})) // TODO: Add check for accepts_incomplete query parameter // Set mock response @@ -2833,36 +2712,32 @@ var _ = Describe(`DrAutomationServiceV1`, func() { // Construct an instance of the CreateManageDrOptions model createManageDrOptionsModel := new(drautomationservicev1.CreateManageDrOptions) - createManageDrOptionsModel.InstanceID = core.StringPtr("crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::") - createManageDrOptionsModel.APIKey = core.StringPtr("testString") - createManageDrOptionsModel.ClientID = core.StringPtr("d9f2c83a-97d2-4b14-bf62-8eaecc67a122") - createManageDrOptionsModel.ClientSecret = core.StringPtr("N8lQ4tP2xM1yT5rS8wK6qR9dD7vF1hU4sA3bE2jG0pL9oX7yC") - createManageDrOptionsModel.GUID = core.StringPtr("123e4567-e89b-12d3-a456-426614174000") + createManageDrOptionsModel.InstanceID = core.StringPtr("123456d3-1122-3344-b67d-4389b44b7bf9") createManageDrOptionsModel.LocationID = core.StringPtr("dal10") createManageDrOptionsModel.MachineType = core.StringPtr("bx2-4x16") - createManageDrOptionsModel.OrchestratorHa = core.BoolPtr(true) createManageDrOptionsModel.OrchestratorLocationType = core.StringPtr("off-premises") createManageDrOptionsModel.OrchestratorName = core.StringPtr("adminUser") createManageDrOptionsModel.OrchestratorPassword = core.StringPtr("testString") createManageDrOptionsModel.OrchestratorWorkspaceID = core.StringPtr("orch-workspace-01") - createManageDrOptionsModel.OrchestratorWorkspaceLocation = core.StringPtr("us-south") + createManageDrOptionsModel.APIKey = core.StringPtr("testString") + createManageDrOptionsModel.ClientID = core.StringPtr("abcd-97d2-1234-bf62-8eaecc67a1234") + createManageDrOptionsModel.ClientSecret = core.StringPtr("abcd1234xM1y123wK6qR9123456789bE2jG0pabcdefgh") + createManageDrOptionsModel.GUID = core.StringPtr("123e4567-e89b-12d3-a456-426614174000") + createManageDrOptionsModel.OrchestratorHa = core.BoolPtr(true) createManageDrOptionsModel.ProxyIP = core.StringPtr("10.40.30.10:8888") createManageDrOptionsModel.RegionID = core.StringPtr("us-south") createManageDrOptionsModel.ResourceInstance = core.StringPtr("crn:v1:bluemix:public:resource-controller::res123") - createManageDrOptionsModel.SecondaryWorkspaceID = core.StringPtr("secondary-workspace789") createManageDrOptionsModel.Secret = core.StringPtr("testString") createManageDrOptionsModel.SecretGroup = core.StringPtr("default-secret-group") createManageDrOptionsModel.SSHKeyName = core.StringPtr("my-ssh-key") createManageDrOptionsModel.StandbyMachineType = core.StringPtr("bx2-8x32") createManageDrOptionsModel.StandbyOrchestratorName = core.StringPtr("standbyAdmin") createManageDrOptionsModel.StandbyOrchestratorWorkspaceID = core.StringPtr("orch-standby-02") - createManageDrOptionsModel.StandbyOrchestratorWorkspaceLocation = core.StringPtr("us-east") createManageDrOptionsModel.StandbyTier = core.StringPtr("Premium") createManageDrOptionsModel.TenantName = core.StringPtr("xxx.ibm.com") createManageDrOptionsModel.Tier = core.StringPtr("Standard") createManageDrOptionsModel.StandByRedeploy = core.StringPtr("testString") createManageDrOptionsModel.AcceptLanguage = core.StringPtr("testString") - createManageDrOptionsModel.IfNoneMatch = core.StringPtr("testString") createManageDrOptionsModel.AcceptsIncomplete = core.BoolPtr(true) createManageDrOptionsModel.Headers = map[string]string{"x-custom-header": "x-custom-value"} @@ -2883,36 +2758,32 @@ var _ = Describe(`DrAutomationServiceV1`, func() { // Construct an instance of the CreateManageDrOptions model createManageDrOptionsModel := new(drautomationservicev1.CreateManageDrOptions) - createManageDrOptionsModel.InstanceID = core.StringPtr("crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::") - createManageDrOptionsModel.APIKey = core.StringPtr("testString") - createManageDrOptionsModel.ClientID = core.StringPtr("d9f2c83a-97d2-4b14-bf62-8eaecc67a122") - createManageDrOptionsModel.ClientSecret = core.StringPtr("N8lQ4tP2xM1yT5rS8wK6qR9dD7vF1hU4sA3bE2jG0pL9oX7yC") - createManageDrOptionsModel.GUID = core.StringPtr("123e4567-e89b-12d3-a456-426614174000") + createManageDrOptionsModel.InstanceID = core.StringPtr("123456d3-1122-3344-b67d-4389b44b7bf9") createManageDrOptionsModel.LocationID = core.StringPtr("dal10") createManageDrOptionsModel.MachineType = core.StringPtr("bx2-4x16") - createManageDrOptionsModel.OrchestratorHa = core.BoolPtr(true) createManageDrOptionsModel.OrchestratorLocationType = core.StringPtr("off-premises") createManageDrOptionsModel.OrchestratorName = core.StringPtr("adminUser") createManageDrOptionsModel.OrchestratorPassword = core.StringPtr("testString") createManageDrOptionsModel.OrchestratorWorkspaceID = core.StringPtr("orch-workspace-01") - createManageDrOptionsModel.OrchestratorWorkspaceLocation = core.StringPtr("us-south") + createManageDrOptionsModel.APIKey = core.StringPtr("testString") + createManageDrOptionsModel.ClientID = core.StringPtr("abcd-97d2-1234-bf62-8eaecc67a1234") + createManageDrOptionsModel.ClientSecret = core.StringPtr("abcd1234xM1y123wK6qR9123456789bE2jG0pabcdefgh") + createManageDrOptionsModel.GUID = core.StringPtr("123e4567-e89b-12d3-a456-426614174000") + createManageDrOptionsModel.OrchestratorHa = core.BoolPtr(true) createManageDrOptionsModel.ProxyIP = core.StringPtr("10.40.30.10:8888") createManageDrOptionsModel.RegionID = core.StringPtr("us-south") createManageDrOptionsModel.ResourceInstance = core.StringPtr("crn:v1:bluemix:public:resource-controller::res123") - createManageDrOptionsModel.SecondaryWorkspaceID = core.StringPtr("secondary-workspace789") createManageDrOptionsModel.Secret = core.StringPtr("testString") createManageDrOptionsModel.SecretGroup = core.StringPtr("default-secret-group") createManageDrOptionsModel.SSHKeyName = core.StringPtr("my-ssh-key") createManageDrOptionsModel.StandbyMachineType = core.StringPtr("bx2-8x32") createManageDrOptionsModel.StandbyOrchestratorName = core.StringPtr("standbyAdmin") createManageDrOptionsModel.StandbyOrchestratorWorkspaceID = core.StringPtr("orch-standby-02") - createManageDrOptionsModel.StandbyOrchestratorWorkspaceLocation = core.StringPtr("us-east") createManageDrOptionsModel.StandbyTier = core.StringPtr("Premium") createManageDrOptionsModel.TenantName = core.StringPtr("xxx.ibm.com") createManageDrOptionsModel.Tier = core.StringPtr("Standard") createManageDrOptionsModel.StandByRedeploy = core.StringPtr("testString") createManageDrOptionsModel.AcceptLanguage = core.StringPtr("testString") - createManageDrOptionsModel.IfNoneMatch = core.StringPtr("testString") createManageDrOptionsModel.AcceptsIncomplete = core.BoolPtr(true) createManageDrOptionsModel.Headers = map[string]string{"x-custom-header": "x-custom-value"} // Invoke operation with empty URL (negative test) @@ -2954,36 +2825,32 @@ var _ = Describe(`DrAutomationServiceV1`, func() { // Construct an instance of the CreateManageDrOptions model createManageDrOptionsModel := new(drautomationservicev1.CreateManageDrOptions) - createManageDrOptionsModel.InstanceID = core.StringPtr("crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::") - createManageDrOptionsModel.APIKey = core.StringPtr("testString") - createManageDrOptionsModel.ClientID = core.StringPtr("d9f2c83a-97d2-4b14-bf62-8eaecc67a122") - createManageDrOptionsModel.ClientSecret = core.StringPtr("N8lQ4tP2xM1yT5rS8wK6qR9dD7vF1hU4sA3bE2jG0pL9oX7yC") - createManageDrOptionsModel.GUID = core.StringPtr("123e4567-e89b-12d3-a456-426614174000") + createManageDrOptionsModel.InstanceID = core.StringPtr("123456d3-1122-3344-b67d-4389b44b7bf9") createManageDrOptionsModel.LocationID = core.StringPtr("dal10") createManageDrOptionsModel.MachineType = core.StringPtr("bx2-4x16") - createManageDrOptionsModel.OrchestratorHa = core.BoolPtr(true) createManageDrOptionsModel.OrchestratorLocationType = core.StringPtr("off-premises") createManageDrOptionsModel.OrchestratorName = core.StringPtr("adminUser") createManageDrOptionsModel.OrchestratorPassword = core.StringPtr("testString") createManageDrOptionsModel.OrchestratorWorkspaceID = core.StringPtr("orch-workspace-01") - createManageDrOptionsModel.OrchestratorWorkspaceLocation = core.StringPtr("us-south") + createManageDrOptionsModel.APIKey = core.StringPtr("testString") + createManageDrOptionsModel.ClientID = core.StringPtr("abcd-97d2-1234-bf62-8eaecc67a1234") + createManageDrOptionsModel.ClientSecret = core.StringPtr("abcd1234xM1y123wK6qR9123456789bE2jG0pabcdefgh") + createManageDrOptionsModel.GUID = core.StringPtr("123e4567-e89b-12d3-a456-426614174000") + createManageDrOptionsModel.OrchestratorHa = core.BoolPtr(true) createManageDrOptionsModel.ProxyIP = core.StringPtr("10.40.30.10:8888") createManageDrOptionsModel.RegionID = core.StringPtr("us-south") createManageDrOptionsModel.ResourceInstance = core.StringPtr("crn:v1:bluemix:public:resource-controller::res123") - createManageDrOptionsModel.SecondaryWorkspaceID = core.StringPtr("secondary-workspace789") createManageDrOptionsModel.Secret = core.StringPtr("testString") createManageDrOptionsModel.SecretGroup = core.StringPtr("default-secret-group") createManageDrOptionsModel.SSHKeyName = core.StringPtr("my-ssh-key") createManageDrOptionsModel.StandbyMachineType = core.StringPtr("bx2-8x32") createManageDrOptionsModel.StandbyOrchestratorName = core.StringPtr("standbyAdmin") createManageDrOptionsModel.StandbyOrchestratorWorkspaceID = core.StringPtr("orch-standby-02") - createManageDrOptionsModel.StandbyOrchestratorWorkspaceLocation = core.StringPtr("us-east") createManageDrOptionsModel.StandbyTier = core.StringPtr("Premium") createManageDrOptionsModel.TenantName = core.StringPtr("xxx.ibm.com") createManageDrOptionsModel.Tier = core.StringPtr("Standard") createManageDrOptionsModel.StandByRedeploy = core.StringPtr("testString") createManageDrOptionsModel.AcceptLanguage = core.StringPtr("testString") - createManageDrOptionsModel.IfNoneMatch = core.StringPtr("testString") createManageDrOptionsModel.AcceptsIncomplete = core.BoolPtr(true) createManageDrOptionsModel.Headers = map[string]string{"x-custom-header": "x-custom-value"} @@ -3001,7 +2868,7 @@ var _ = Describe(`DrAutomationServiceV1`, func() { }) }) Describe(`GetLastOperation(getLastOperationOptions *GetLastOperationOptions) - Operation response error`, func() { - getLastOperationPath := "/drautomation/v1/last_operation/crn:v1:staging:public:power-dr-automation:global:a%2Fa123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::" + getLastOperationPath := "/drautomation/v1/last_operation/123456d3-1122-3344-b67d-4389b44b7bf9" Context(`Using mock server endpoint with invalid JSON response`, func() { BeforeEach(func() { testServer = httptest.NewServer(http.HandlerFunc(func(res http.ResponseWriter, req *http.Request) { @@ -3012,8 +2879,6 @@ var _ = Describe(`DrAutomationServiceV1`, func() { Expect(req.Method).To(Equal("GET")) Expect(req.Header["Accept-Language"]).ToNot(BeNil()) Expect(req.Header["Accept-Language"][0]).To(Equal(fmt.Sprintf("%v", "testString"))) - Expect(req.Header["If-None-Match"]).ToNot(BeNil()) - Expect(req.Header["If-None-Match"][0]).To(Equal(fmt.Sprintf("%v", "testString"))) res.Header().Set("Content-type", "application/json") res.WriteHeader(200) fmt.Fprint(res, `} this is not valid json {`) @@ -3029,9 +2894,8 @@ var _ = Describe(`DrAutomationServiceV1`, func() { // Construct an instance of the GetLastOperationOptions model getLastOperationOptionsModel := new(drautomationservicev1.GetLastOperationOptions) - getLastOperationOptionsModel.InstanceID = core.StringPtr("crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::") + getLastOperationOptionsModel.InstanceID = core.StringPtr("123456d3-1122-3344-b67d-4389b44b7bf9") getLastOperationOptionsModel.AcceptLanguage = core.StringPtr("testString") - getLastOperationOptionsModel.IfNoneMatch = core.StringPtr("testString") getLastOperationOptionsModel.Headers = map[string]string{"x-custom-header": "x-custom-value"} // Expect response parsing to fail since we are receiving a text/plain response result, response, operationErr := drAutomationServiceService.GetLastOperation(getLastOperationOptionsModel) @@ -3052,7 +2916,7 @@ var _ = Describe(`DrAutomationServiceV1`, func() { }) }) Describe(`GetLastOperation(getLastOperationOptions *GetLastOperationOptions)`, func() { - getLastOperationPath := "/drautomation/v1/last_operation/crn:v1:staging:public:power-dr-automation:global:a%2Fa123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::" + getLastOperationPath := "/drautomation/v1/last_operation/123456d3-1122-3344-b67d-4389b44b7bf9" Context(`Using mock server endpoint with timeout`, func() { BeforeEach(func() { testServer = httptest.NewServer(http.HandlerFunc(func(res http.ResponseWriter, req *http.Request) { @@ -3064,8 +2928,6 @@ var _ = Describe(`DrAutomationServiceV1`, func() { Expect(req.Header["Accept-Language"]).ToNot(BeNil()) Expect(req.Header["Accept-Language"][0]).To(Equal(fmt.Sprintf("%v", "testString"))) - Expect(req.Header["If-None-Match"]).ToNot(BeNil()) - Expect(req.Header["If-None-Match"][0]).To(Equal(fmt.Sprintf("%v", "testString"))) // Sleep a short time to support a timeout test time.Sleep(100 * time.Millisecond) @@ -3086,9 +2948,8 @@ var _ = Describe(`DrAutomationServiceV1`, func() { // Construct an instance of the GetLastOperationOptions model getLastOperationOptionsModel := new(drautomationservicev1.GetLastOperationOptions) - getLastOperationOptionsModel.InstanceID = core.StringPtr("crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::") + getLastOperationOptionsModel.InstanceID = core.StringPtr("123456d3-1122-3344-b67d-4389b44b7bf9") getLastOperationOptionsModel.AcceptLanguage = core.StringPtr("testString") - getLastOperationOptionsModel.IfNoneMatch = core.StringPtr("testString") getLastOperationOptionsModel.Headers = map[string]string{"x-custom-header": "x-custom-value"} // Invoke operation with a Context to test a timeout error @@ -3127,8 +2988,6 @@ var _ = Describe(`DrAutomationServiceV1`, func() { Expect(req.Header["Accept-Language"]).ToNot(BeNil()) Expect(req.Header["Accept-Language"][0]).To(Equal(fmt.Sprintf("%v", "testString"))) - Expect(req.Header["If-None-Match"]).ToNot(BeNil()) - Expect(req.Header["If-None-Match"][0]).To(Equal(fmt.Sprintf("%v", "testString"))) // Set mock response res.Header().Set("Content-type", "application/json") res.WriteHeader(200) @@ -3151,9 +3010,8 @@ var _ = Describe(`DrAutomationServiceV1`, func() { // Construct an instance of the GetLastOperationOptions model getLastOperationOptionsModel := new(drautomationservicev1.GetLastOperationOptions) - getLastOperationOptionsModel.InstanceID = core.StringPtr("crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::") + getLastOperationOptionsModel.InstanceID = core.StringPtr("123456d3-1122-3344-b67d-4389b44b7bf9") getLastOperationOptionsModel.AcceptLanguage = core.StringPtr("testString") - getLastOperationOptionsModel.IfNoneMatch = core.StringPtr("testString") getLastOperationOptionsModel.Headers = map[string]string{"x-custom-header": "x-custom-value"} // Invoke operation with valid options model (positive test) @@ -3173,9 +3031,8 @@ var _ = Describe(`DrAutomationServiceV1`, func() { // Construct an instance of the GetLastOperationOptions model getLastOperationOptionsModel := new(drautomationservicev1.GetLastOperationOptions) - getLastOperationOptionsModel.InstanceID = core.StringPtr("crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::") + getLastOperationOptionsModel.InstanceID = core.StringPtr("123456d3-1122-3344-b67d-4389b44b7bf9") getLastOperationOptionsModel.AcceptLanguage = core.StringPtr("testString") - getLastOperationOptionsModel.IfNoneMatch = core.StringPtr("testString") getLastOperationOptionsModel.Headers = map[string]string{"x-custom-header": "x-custom-value"} // Invoke operation with empty URL (negative test) err := drAutomationServiceService.SetServiceURL("") @@ -3216,9 +3073,8 @@ var _ = Describe(`DrAutomationServiceV1`, func() { // Construct an instance of the GetLastOperationOptions model getLastOperationOptionsModel := new(drautomationservicev1.GetLastOperationOptions) - getLastOperationOptionsModel.InstanceID = core.StringPtr("crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::") + getLastOperationOptionsModel.InstanceID = core.StringPtr("123456d3-1122-3344-b67d-4389b44b7bf9") getLastOperationOptionsModel.AcceptLanguage = core.StringPtr("testString") - getLastOperationOptionsModel.IfNoneMatch = core.StringPtr("testString") getLastOperationOptionsModel.Headers = map[string]string{"x-custom-header": "x-custom-value"} // Invoke operation @@ -3235,7 +3091,7 @@ var _ = Describe(`DrAutomationServiceV1`, func() { }) }) Describe(`ListEvents(listEventsOptions *ListEventsOptions) - Operation response error`, func() { - listEventsPath := "/drautomation/v1/service_instances/crn:v1:staging:public:power-dr-automation:global:a%2Fa123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::/events" + listEventsPath := "/drautomation/v1/service_instances/123456d3-1122-3344-b67d-4389b44b7bf9/events" Context(`Using mock server endpoint with invalid JSON response`, func() { BeforeEach(func() { testServer = httptest.NewServer(http.HandlerFunc(func(res http.ResponseWriter, req *http.Request) { @@ -3246,8 +3102,6 @@ var _ = Describe(`DrAutomationServiceV1`, func() { Expect(req.Method).To(Equal("GET")) Expect(req.Header["Accept-Language"]).ToNot(BeNil()) Expect(req.Header["Accept-Language"][0]).To(Equal(fmt.Sprintf("%v", "testString"))) - Expect(req.Header["If-None-Match"]).ToNot(BeNil()) - Expect(req.Header["If-None-Match"][0]).To(Equal(fmt.Sprintf("%v", "testString"))) Expect(req.URL.Query()["time"]).To(Equal([]string{"2025-06-19T23:59:59Z"})) Expect(req.URL.Query()["from_time"]).To(Equal([]string{"2025-06-19T00:00:00Z"})) Expect(req.URL.Query()["to_time"]).To(Equal([]string{"2025-06-19T23:59:59Z"})) @@ -3266,12 +3120,11 @@ var _ = Describe(`DrAutomationServiceV1`, func() { // Construct an instance of the ListEventsOptions model listEventsOptionsModel := new(drautomationservicev1.ListEventsOptions) - listEventsOptionsModel.InstanceID = core.StringPtr("crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::") + listEventsOptionsModel.InstanceID = core.StringPtr("123456d3-1122-3344-b67d-4389b44b7bf9") listEventsOptionsModel.Time = core.StringPtr("2025-06-19T23:59:59Z") listEventsOptionsModel.FromTime = core.StringPtr("2025-06-19T00:00:00Z") listEventsOptionsModel.ToTime = core.StringPtr("2025-06-19T23:59:59Z") listEventsOptionsModel.AcceptLanguage = core.StringPtr("testString") - listEventsOptionsModel.IfNoneMatch = core.StringPtr("testString") listEventsOptionsModel.Headers = map[string]string{"x-custom-header": "x-custom-value"} // Expect response parsing to fail since we are receiving a text/plain response result, response, operationErr := drAutomationServiceService.ListEvents(listEventsOptionsModel) @@ -3292,7 +3145,7 @@ var _ = Describe(`DrAutomationServiceV1`, func() { }) }) Describe(`ListEvents(listEventsOptions *ListEventsOptions)`, func() { - listEventsPath := "/drautomation/v1/service_instances/crn:v1:staging:public:power-dr-automation:global:a%2Fa123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::/events" + listEventsPath := "/drautomation/v1/service_instances/123456d3-1122-3344-b67d-4389b44b7bf9/events" Context(`Using mock server endpoint with timeout`, func() { BeforeEach(func() { testServer = httptest.NewServer(http.HandlerFunc(func(res http.ResponseWriter, req *http.Request) { @@ -3304,8 +3157,6 @@ var _ = Describe(`DrAutomationServiceV1`, func() { Expect(req.Header["Accept-Language"]).ToNot(BeNil()) Expect(req.Header["Accept-Language"][0]).To(Equal(fmt.Sprintf("%v", "testString"))) - Expect(req.Header["If-None-Match"]).ToNot(BeNil()) - Expect(req.Header["If-None-Match"][0]).To(Equal(fmt.Sprintf("%v", "testString"))) Expect(req.URL.Query()["time"]).To(Equal([]string{"2025-06-19T23:59:59Z"})) Expect(req.URL.Query()["from_time"]).To(Equal([]string{"2025-06-19T00:00:00Z"})) Expect(req.URL.Query()["to_time"]).To(Equal([]string{"2025-06-19T23:59:59Z"})) @@ -3329,12 +3180,11 @@ var _ = Describe(`DrAutomationServiceV1`, func() { // Construct an instance of the ListEventsOptions model listEventsOptionsModel := new(drautomationservicev1.ListEventsOptions) - listEventsOptionsModel.InstanceID = core.StringPtr("crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::") + listEventsOptionsModel.InstanceID = core.StringPtr("123456d3-1122-3344-b67d-4389b44b7bf9") listEventsOptionsModel.Time = core.StringPtr("2025-06-19T23:59:59Z") listEventsOptionsModel.FromTime = core.StringPtr("2025-06-19T00:00:00Z") listEventsOptionsModel.ToTime = core.StringPtr("2025-06-19T23:59:59Z") listEventsOptionsModel.AcceptLanguage = core.StringPtr("testString") - listEventsOptionsModel.IfNoneMatch = core.StringPtr("testString") listEventsOptionsModel.Headers = map[string]string{"x-custom-header": "x-custom-value"} // Invoke operation with a Context to test a timeout error @@ -3373,8 +3223,6 @@ var _ = Describe(`DrAutomationServiceV1`, func() { Expect(req.Header["Accept-Language"]).ToNot(BeNil()) Expect(req.Header["Accept-Language"][0]).To(Equal(fmt.Sprintf("%v", "testString"))) - Expect(req.Header["If-None-Match"]).ToNot(BeNil()) - Expect(req.Header["If-None-Match"][0]).To(Equal(fmt.Sprintf("%v", "testString"))) Expect(req.URL.Query()["time"]).To(Equal([]string{"2025-06-19T23:59:59Z"})) Expect(req.URL.Query()["from_time"]).To(Equal([]string{"2025-06-19T00:00:00Z"})) Expect(req.URL.Query()["to_time"]).To(Equal([]string{"2025-06-19T23:59:59Z"})) @@ -3400,12 +3248,11 @@ var _ = Describe(`DrAutomationServiceV1`, func() { // Construct an instance of the ListEventsOptions model listEventsOptionsModel := new(drautomationservicev1.ListEventsOptions) - listEventsOptionsModel.InstanceID = core.StringPtr("crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::") + listEventsOptionsModel.InstanceID = core.StringPtr("123456d3-1122-3344-b67d-4389b44b7bf9") listEventsOptionsModel.Time = core.StringPtr("2025-06-19T23:59:59Z") listEventsOptionsModel.FromTime = core.StringPtr("2025-06-19T00:00:00Z") listEventsOptionsModel.ToTime = core.StringPtr("2025-06-19T23:59:59Z") listEventsOptionsModel.AcceptLanguage = core.StringPtr("testString") - listEventsOptionsModel.IfNoneMatch = core.StringPtr("testString") listEventsOptionsModel.Headers = map[string]string{"x-custom-header": "x-custom-value"} // Invoke operation with valid options model (positive test) @@ -3425,12 +3272,11 @@ var _ = Describe(`DrAutomationServiceV1`, func() { // Construct an instance of the ListEventsOptions model listEventsOptionsModel := new(drautomationservicev1.ListEventsOptions) - listEventsOptionsModel.InstanceID = core.StringPtr("crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::") + listEventsOptionsModel.InstanceID = core.StringPtr("123456d3-1122-3344-b67d-4389b44b7bf9") listEventsOptionsModel.Time = core.StringPtr("2025-06-19T23:59:59Z") listEventsOptionsModel.FromTime = core.StringPtr("2025-06-19T00:00:00Z") listEventsOptionsModel.ToTime = core.StringPtr("2025-06-19T23:59:59Z") listEventsOptionsModel.AcceptLanguage = core.StringPtr("testString") - listEventsOptionsModel.IfNoneMatch = core.StringPtr("testString") listEventsOptionsModel.Headers = map[string]string{"x-custom-header": "x-custom-value"} // Invoke operation with empty URL (negative test) err := drAutomationServiceService.SetServiceURL("") @@ -3471,12 +3317,11 @@ var _ = Describe(`DrAutomationServiceV1`, func() { // Construct an instance of the ListEventsOptions model listEventsOptionsModel := new(drautomationservicev1.ListEventsOptions) - listEventsOptionsModel.InstanceID = core.StringPtr("crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::") + listEventsOptionsModel.InstanceID = core.StringPtr("123456d3-1122-3344-b67d-4389b44b7bf9") listEventsOptionsModel.Time = core.StringPtr("2025-06-19T23:59:59Z") listEventsOptionsModel.FromTime = core.StringPtr("2025-06-19T00:00:00Z") listEventsOptionsModel.ToTime = core.StringPtr("2025-06-19T23:59:59Z") listEventsOptionsModel.AcceptLanguage = core.StringPtr("testString") - listEventsOptionsModel.IfNoneMatch = core.StringPtr("testString") listEventsOptionsModel.Headers = map[string]string{"x-custom-header": "x-custom-value"} // Invoke operation @@ -3493,7 +3338,7 @@ var _ = Describe(`DrAutomationServiceV1`, func() { }) }) Describe(`GetEvent(getEventOptions *GetEventOptions) - Operation response error`, func() { - getEventPath := "/drautomation/v1/service_instances/crn:v1:staging:public:power-dr-automation:global:a%2Fa123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::/events/00116b2a-9326-4024-839e-fb5364b76898" + getEventPath := "/drautomation/v1/service_instances/123456d3-1122-3344-b67d-4389b44b7bf9/events/00116b2a-9326-4024-839e-fb5364b76898" Context(`Using mock server endpoint with invalid JSON response`, func() { BeforeEach(func() { testServer = httptest.NewServer(http.HandlerFunc(func(res http.ResponseWriter, req *http.Request) { @@ -3504,8 +3349,6 @@ var _ = Describe(`DrAutomationServiceV1`, func() { Expect(req.Method).To(Equal("GET")) Expect(req.Header["Accept-Language"]).ToNot(BeNil()) Expect(req.Header["Accept-Language"][0]).To(Equal(fmt.Sprintf("%v", "testString"))) - Expect(req.Header["If-None-Match"]).ToNot(BeNil()) - Expect(req.Header["If-None-Match"][0]).To(Equal(fmt.Sprintf("%v", "testString"))) res.Header().Set("Content-type", "application/json") res.WriteHeader(200) fmt.Fprint(res, `} this is not valid json {`) @@ -3521,10 +3364,9 @@ var _ = Describe(`DrAutomationServiceV1`, func() { // Construct an instance of the GetEventOptions model getEventOptionsModel := new(drautomationservicev1.GetEventOptions) - getEventOptionsModel.InstanceID = core.StringPtr("crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::") + getEventOptionsModel.InstanceID = core.StringPtr("123456d3-1122-3344-b67d-4389b44b7bf9") getEventOptionsModel.EventID = core.StringPtr("00116b2a-9326-4024-839e-fb5364b76898") getEventOptionsModel.AcceptLanguage = core.StringPtr("testString") - getEventOptionsModel.IfNoneMatch = core.StringPtr("testString") getEventOptionsModel.Headers = map[string]string{"x-custom-header": "x-custom-value"} // Expect response parsing to fail since we are receiving a text/plain response result, response, operationErr := drAutomationServiceService.GetEvent(getEventOptionsModel) @@ -3545,7 +3387,7 @@ var _ = Describe(`DrAutomationServiceV1`, func() { }) }) Describe(`GetEvent(getEventOptions *GetEventOptions)`, func() { - getEventPath := "/drautomation/v1/service_instances/crn:v1:staging:public:power-dr-automation:global:a%2Fa123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::/events/00116b2a-9326-4024-839e-fb5364b76898" + getEventPath := "/drautomation/v1/service_instances/123456d3-1122-3344-b67d-4389b44b7bf9/events/00116b2a-9326-4024-839e-fb5364b76898" Context(`Using mock server endpoint with timeout`, func() { BeforeEach(func() { testServer = httptest.NewServer(http.HandlerFunc(func(res http.ResponseWriter, req *http.Request) { @@ -3557,8 +3399,6 @@ var _ = Describe(`DrAutomationServiceV1`, func() { Expect(req.Header["Accept-Language"]).ToNot(BeNil()) Expect(req.Header["Accept-Language"][0]).To(Equal(fmt.Sprintf("%v", "testString"))) - Expect(req.Header["If-None-Match"]).ToNot(BeNil()) - Expect(req.Header["If-None-Match"][0]).To(Equal(fmt.Sprintf("%v", "testString"))) // Sleep a short time to support a timeout test time.Sleep(100 * time.Millisecond) @@ -3579,10 +3419,9 @@ var _ = Describe(`DrAutomationServiceV1`, func() { // Construct an instance of the GetEventOptions model getEventOptionsModel := new(drautomationservicev1.GetEventOptions) - getEventOptionsModel.InstanceID = core.StringPtr("crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::") + getEventOptionsModel.InstanceID = core.StringPtr("123456d3-1122-3344-b67d-4389b44b7bf9") getEventOptionsModel.EventID = core.StringPtr("00116b2a-9326-4024-839e-fb5364b76898") getEventOptionsModel.AcceptLanguage = core.StringPtr("testString") - getEventOptionsModel.IfNoneMatch = core.StringPtr("testString") getEventOptionsModel.Headers = map[string]string{"x-custom-header": "x-custom-value"} // Invoke operation with a Context to test a timeout error @@ -3621,8 +3460,6 @@ var _ = Describe(`DrAutomationServiceV1`, func() { Expect(req.Header["Accept-Language"]).ToNot(BeNil()) Expect(req.Header["Accept-Language"][0]).To(Equal(fmt.Sprintf("%v", "testString"))) - Expect(req.Header["If-None-Match"]).ToNot(BeNil()) - Expect(req.Header["If-None-Match"][0]).To(Equal(fmt.Sprintf("%v", "testString"))) // Set mock response res.Header().Set("Content-type", "application/json") res.WriteHeader(200) @@ -3645,10 +3482,9 @@ var _ = Describe(`DrAutomationServiceV1`, func() { // Construct an instance of the GetEventOptions model getEventOptionsModel := new(drautomationservicev1.GetEventOptions) - getEventOptionsModel.InstanceID = core.StringPtr("crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::") + getEventOptionsModel.InstanceID = core.StringPtr("123456d3-1122-3344-b67d-4389b44b7bf9") getEventOptionsModel.EventID = core.StringPtr("00116b2a-9326-4024-839e-fb5364b76898") getEventOptionsModel.AcceptLanguage = core.StringPtr("testString") - getEventOptionsModel.IfNoneMatch = core.StringPtr("testString") getEventOptionsModel.Headers = map[string]string{"x-custom-header": "x-custom-value"} // Invoke operation with valid options model (positive test) @@ -3668,10 +3504,9 @@ var _ = Describe(`DrAutomationServiceV1`, func() { // Construct an instance of the GetEventOptions model getEventOptionsModel := new(drautomationservicev1.GetEventOptions) - getEventOptionsModel.InstanceID = core.StringPtr("crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::") + getEventOptionsModel.InstanceID = core.StringPtr("123456d3-1122-3344-b67d-4389b44b7bf9") getEventOptionsModel.EventID = core.StringPtr("00116b2a-9326-4024-839e-fb5364b76898") getEventOptionsModel.AcceptLanguage = core.StringPtr("testString") - getEventOptionsModel.IfNoneMatch = core.StringPtr("testString") getEventOptionsModel.Headers = map[string]string{"x-custom-header": "x-custom-value"} // Invoke operation with empty URL (negative test) err := drAutomationServiceService.SetServiceURL("") @@ -3712,10 +3547,9 @@ var _ = Describe(`DrAutomationServiceV1`, func() { // Construct an instance of the GetEventOptions model getEventOptionsModel := new(drautomationservicev1.GetEventOptions) - getEventOptionsModel.InstanceID = core.StringPtr("crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::") + getEventOptionsModel.InstanceID = core.StringPtr("123456d3-1122-3344-b67d-4389b44b7bf9") getEventOptionsModel.EventID = core.StringPtr("00116b2a-9326-4024-839e-fb5364b76898") getEventOptionsModel.AcceptLanguage = core.StringPtr("testString") - getEventOptionsModel.IfNoneMatch = core.StringPtr("testString") getEventOptionsModel.Headers = map[string]string{"x-custom-header": "x-custom-value"} // Invoke operation @@ -3739,275 +3573,247 @@ var _ = Describe(`DrAutomationServiceV1`, func() { }) It(`Invoke NewCreateApikeyOptions successfully`, func() { // Construct an instance of the CreateApikeyOptions model - instanceID := "crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::" + instanceID := "123456d3-1122-3344-b67d-4389b44b7bf9" createApikeyOptionsAPIKey := "abcdefrg_izklmnop_fxbEED" createApikeyOptionsModel := drAutomationServiceService.NewCreateApikeyOptions(instanceID, createApikeyOptionsAPIKey) - createApikeyOptionsModel.SetInstanceID("crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::") + createApikeyOptionsModel.SetInstanceID("123456d3-1122-3344-b67d-4389b44b7bf9") createApikeyOptionsModel.SetAPIKey("abcdefrg_izklmnop_fxbEED") createApikeyOptionsModel.SetAcceptLanguage("testString") - createApikeyOptionsModel.SetIfNoneMatch("testString") createApikeyOptionsModel.SetHeaders(map[string]string{"foo": "bar"}) Expect(createApikeyOptionsModel).ToNot(BeNil()) - Expect(createApikeyOptionsModel.InstanceID).To(Equal(core.StringPtr("crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::"))) + Expect(createApikeyOptionsModel.InstanceID).To(Equal(core.StringPtr("123456d3-1122-3344-b67d-4389b44b7bf9"))) Expect(createApikeyOptionsModel.APIKey).To(Equal(core.StringPtr("abcdefrg_izklmnop_fxbEED"))) Expect(createApikeyOptionsModel.AcceptLanguage).To(Equal(core.StringPtr("testString"))) - Expect(createApikeyOptionsModel.IfNoneMatch).To(Equal(core.StringPtr("testString"))) Expect(createApikeyOptionsModel.Headers).To(Equal(map[string]string{"foo": "bar"})) }) It(`Invoke NewCreateManageDrOptions successfully`, func() { // Construct an instance of the CreateManageDrOptions model - instanceID := "crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::" - createManageDrOptionsModel := drAutomationServiceService.NewCreateManageDrOptions(instanceID) - createManageDrOptionsModel.SetInstanceID("crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::") - createManageDrOptionsModel.SetAPIKey("testString") - createManageDrOptionsModel.SetClientID("d9f2c83a-97d2-4b14-bf62-8eaecc67a122") - createManageDrOptionsModel.SetClientSecret("N8lQ4tP2xM1yT5rS8wK6qR9dD7vF1hU4sA3bE2jG0pL9oX7yC") - createManageDrOptionsModel.SetGUID("123e4567-e89b-12d3-a456-426614174000") + instanceID := "123456d3-1122-3344-b67d-4389b44b7bf9" + createManageDrOptionsLocationID := "dal10" + createManageDrOptionsMachineType := "bx2-4x16" + createManageDrOptionsOrchestratorLocationType := "off-premises" + createManageDrOptionsOrchestratorName := "adminUser" + createManageDrOptionsOrchestratorPassword := "testString" + createManageDrOptionsOrchestratorWorkspaceID := "orch-workspace-01" + createManageDrOptionsModel := drAutomationServiceService.NewCreateManageDrOptions(instanceID, createManageDrOptionsLocationID, createManageDrOptionsMachineType, createManageDrOptionsOrchestratorLocationType, createManageDrOptionsOrchestratorName, createManageDrOptionsOrchestratorPassword, createManageDrOptionsOrchestratorWorkspaceID) + createManageDrOptionsModel.SetInstanceID("123456d3-1122-3344-b67d-4389b44b7bf9") createManageDrOptionsModel.SetLocationID("dal10") createManageDrOptionsModel.SetMachineType("bx2-4x16") - createManageDrOptionsModel.SetOrchestratorHa(true) createManageDrOptionsModel.SetOrchestratorLocationType("off-premises") createManageDrOptionsModel.SetOrchestratorName("adminUser") createManageDrOptionsModel.SetOrchestratorPassword("testString") createManageDrOptionsModel.SetOrchestratorWorkspaceID("orch-workspace-01") - createManageDrOptionsModel.SetOrchestratorWorkspaceLocation("us-south") + createManageDrOptionsModel.SetAPIKey("testString") + createManageDrOptionsModel.SetClientID("abcd-97d2-1234-bf62-8eaecc67a1234") + createManageDrOptionsModel.SetClientSecret("abcd1234xM1y123wK6qR9123456789bE2jG0pabcdefgh") + createManageDrOptionsModel.SetGUID("123e4567-e89b-12d3-a456-426614174000") + createManageDrOptionsModel.SetOrchestratorHa(true) createManageDrOptionsModel.SetProxyIP("10.40.30.10:8888") createManageDrOptionsModel.SetRegionID("us-south") createManageDrOptionsModel.SetResourceInstance("crn:v1:bluemix:public:resource-controller::res123") - createManageDrOptionsModel.SetSecondaryWorkspaceID("secondary-workspace789") createManageDrOptionsModel.SetSecret("testString") createManageDrOptionsModel.SetSecretGroup("default-secret-group") createManageDrOptionsModel.SetSSHKeyName("my-ssh-key") createManageDrOptionsModel.SetStandbyMachineType("bx2-8x32") createManageDrOptionsModel.SetStandbyOrchestratorName("standbyAdmin") createManageDrOptionsModel.SetStandbyOrchestratorWorkspaceID("orch-standby-02") - createManageDrOptionsModel.SetStandbyOrchestratorWorkspaceLocation("us-east") createManageDrOptionsModel.SetStandbyTier("Premium") createManageDrOptionsModel.SetTenantName("xxx.ibm.com") createManageDrOptionsModel.SetTier("Standard") createManageDrOptionsModel.SetStandByRedeploy("testString") createManageDrOptionsModel.SetAcceptLanguage("testString") - createManageDrOptionsModel.SetIfNoneMatch("testString") createManageDrOptionsModel.SetAcceptsIncomplete(true) createManageDrOptionsModel.SetHeaders(map[string]string{"foo": "bar"}) Expect(createManageDrOptionsModel).ToNot(BeNil()) - Expect(createManageDrOptionsModel.InstanceID).To(Equal(core.StringPtr("crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::"))) - Expect(createManageDrOptionsModel.APIKey).To(Equal(core.StringPtr("testString"))) - Expect(createManageDrOptionsModel.ClientID).To(Equal(core.StringPtr("d9f2c83a-97d2-4b14-bf62-8eaecc67a122"))) - Expect(createManageDrOptionsModel.ClientSecret).To(Equal(core.StringPtr("N8lQ4tP2xM1yT5rS8wK6qR9dD7vF1hU4sA3bE2jG0pL9oX7yC"))) - Expect(createManageDrOptionsModel.GUID).To(Equal(core.StringPtr("123e4567-e89b-12d3-a456-426614174000"))) + Expect(createManageDrOptionsModel.InstanceID).To(Equal(core.StringPtr("123456d3-1122-3344-b67d-4389b44b7bf9"))) Expect(createManageDrOptionsModel.LocationID).To(Equal(core.StringPtr("dal10"))) Expect(createManageDrOptionsModel.MachineType).To(Equal(core.StringPtr("bx2-4x16"))) - Expect(createManageDrOptionsModel.OrchestratorHa).To(Equal(core.BoolPtr(true))) Expect(createManageDrOptionsModel.OrchestratorLocationType).To(Equal(core.StringPtr("off-premises"))) Expect(createManageDrOptionsModel.OrchestratorName).To(Equal(core.StringPtr("adminUser"))) Expect(createManageDrOptionsModel.OrchestratorPassword).To(Equal(core.StringPtr("testString"))) Expect(createManageDrOptionsModel.OrchestratorWorkspaceID).To(Equal(core.StringPtr("orch-workspace-01"))) - Expect(createManageDrOptionsModel.OrchestratorWorkspaceLocation).To(Equal(core.StringPtr("us-south"))) + Expect(createManageDrOptionsModel.APIKey).To(Equal(core.StringPtr("testString"))) + Expect(createManageDrOptionsModel.ClientID).To(Equal(core.StringPtr("abcd-97d2-1234-bf62-8eaecc67a1234"))) + Expect(createManageDrOptionsModel.ClientSecret).To(Equal(core.StringPtr("abcd1234xM1y123wK6qR9123456789bE2jG0pabcdefgh"))) + Expect(createManageDrOptionsModel.GUID).To(Equal(core.StringPtr("123e4567-e89b-12d3-a456-426614174000"))) + Expect(createManageDrOptionsModel.OrchestratorHa).To(Equal(core.BoolPtr(true))) Expect(createManageDrOptionsModel.ProxyIP).To(Equal(core.StringPtr("10.40.30.10:8888"))) Expect(createManageDrOptionsModel.RegionID).To(Equal(core.StringPtr("us-south"))) Expect(createManageDrOptionsModel.ResourceInstance).To(Equal(core.StringPtr("crn:v1:bluemix:public:resource-controller::res123"))) - Expect(createManageDrOptionsModel.SecondaryWorkspaceID).To(Equal(core.StringPtr("secondary-workspace789"))) Expect(createManageDrOptionsModel.Secret).To(Equal(core.StringPtr("testString"))) Expect(createManageDrOptionsModel.SecretGroup).To(Equal(core.StringPtr("default-secret-group"))) Expect(createManageDrOptionsModel.SSHKeyName).To(Equal(core.StringPtr("my-ssh-key"))) Expect(createManageDrOptionsModel.StandbyMachineType).To(Equal(core.StringPtr("bx2-8x32"))) Expect(createManageDrOptionsModel.StandbyOrchestratorName).To(Equal(core.StringPtr("standbyAdmin"))) Expect(createManageDrOptionsModel.StandbyOrchestratorWorkspaceID).To(Equal(core.StringPtr("orch-standby-02"))) - Expect(createManageDrOptionsModel.StandbyOrchestratorWorkspaceLocation).To(Equal(core.StringPtr("us-east"))) Expect(createManageDrOptionsModel.StandbyTier).To(Equal(core.StringPtr("Premium"))) Expect(createManageDrOptionsModel.TenantName).To(Equal(core.StringPtr("xxx.ibm.com"))) Expect(createManageDrOptionsModel.Tier).To(Equal(core.StringPtr("Standard"))) Expect(createManageDrOptionsModel.StandByRedeploy).To(Equal(core.StringPtr("testString"))) Expect(createManageDrOptionsModel.AcceptLanguage).To(Equal(core.StringPtr("testString"))) - Expect(createManageDrOptionsModel.IfNoneMatch).To(Equal(core.StringPtr("testString"))) Expect(createManageDrOptionsModel.AcceptsIncomplete).To(Equal(core.BoolPtr(true))) Expect(createManageDrOptionsModel.Headers).To(Equal(map[string]string{"foo": "bar"})) }) It(`Invoke NewGetApikeyOptions successfully`, func() { // Construct an instance of the GetApikeyOptions model - instanceID := "crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::" + instanceID := "123456d3-1122-3344-b67d-4389b44b7bf9" getApikeyOptionsModel := drAutomationServiceService.NewGetApikeyOptions(instanceID) - getApikeyOptionsModel.SetInstanceID("crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::") + getApikeyOptionsModel.SetInstanceID("123456d3-1122-3344-b67d-4389b44b7bf9") getApikeyOptionsModel.SetAcceptLanguage("testString") - getApikeyOptionsModel.SetIfNoneMatch("testString") getApikeyOptionsModel.SetHeaders(map[string]string{"foo": "bar"}) Expect(getApikeyOptionsModel).ToNot(BeNil()) - Expect(getApikeyOptionsModel.InstanceID).To(Equal(core.StringPtr("crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::"))) + Expect(getApikeyOptionsModel.InstanceID).To(Equal(core.StringPtr("123456d3-1122-3344-b67d-4389b44b7bf9"))) Expect(getApikeyOptionsModel.AcceptLanguage).To(Equal(core.StringPtr("testString"))) - Expect(getApikeyOptionsModel.IfNoneMatch).To(Equal(core.StringPtr("testString"))) Expect(getApikeyOptionsModel.Headers).To(Equal(map[string]string{"foo": "bar"})) }) It(`Invoke NewGetDrGrsLocationPairOptions successfully`, func() { // Construct an instance of the GetDrGrsLocationPairOptions model - instanceID := "crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::" + instanceID := "123456d3-1122-3344-b67d-4389b44b7bf9" getDrGrsLocationPairOptionsModel := drAutomationServiceService.NewGetDrGrsLocationPairOptions(instanceID) - getDrGrsLocationPairOptionsModel.SetInstanceID("crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::") + getDrGrsLocationPairOptionsModel.SetInstanceID("123456d3-1122-3344-b67d-4389b44b7bf9") getDrGrsLocationPairOptionsModel.SetAcceptLanguage("testString") - getDrGrsLocationPairOptionsModel.SetIfNoneMatch("testString") getDrGrsLocationPairOptionsModel.SetHeaders(map[string]string{"foo": "bar"}) Expect(getDrGrsLocationPairOptionsModel).ToNot(BeNil()) - Expect(getDrGrsLocationPairOptionsModel.InstanceID).To(Equal(core.StringPtr("crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::"))) + Expect(getDrGrsLocationPairOptionsModel.InstanceID).To(Equal(core.StringPtr("123456d3-1122-3344-b67d-4389b44b7bf9"))) Expect(getDrGrsLocationPairOptionsModel.AcceptLanguage).To(Equal(core.StringPtr("testString"))) - Expect(getDrGrsLocationPairOptionsModel.IfNoneMatch).To(Equal(core.StringPtr("testString"))) Expect(getDrGrsLocationPairOptionsModel.Headers).To(Equal(map[string]string{"foo": "bar"})) }) It(`Invoke NewGetDrLocationsOptions successfully`, func() { // Construct an instance of the GetDrLocationsOptions model - instanceID := "crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::" + instanceID := "123456d3-1122-3344-b67d-4389b44b7bf9" getDrLocationsOptionsModel := drAutomationServiceService.NewGetDrLocationsOptions(instanceID) - getDrLocationsOptionsModel.SetInstanceID("crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::") + getDrLocationsOptionsModel.SetInstanceID("123456d3-1122-3344-b67d-4389b44b7bf9") getDrLocationsOptionsModel.SetAcceptLanguage("testString") - getDrLocationsOptionsModel.SetIfNoneMatch("testString") getDrLocationsOptionsModel.SetHeaders(map[string]string{"foo": "bar"}) Expect(getDrLocationsOptionsModel).ToNot(BeNil()) - Expect(getDrLocationsOptionsModel.InstanceID).To(Equal(core.StringPtr("crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::"))) + Expect(getDrLocationsOptionsModel.InstanceID).To(Equal(core.StringPtr("123456d3-1122-3344-b67d-4389b44b7bf9"))) Expect(getDrLocationsOptionsModel.AcceptLanguage).To(Equal(core.StringPtr("testString"))) - Expect(getDrLocationsOptionsModel.IfNoneMatch).To(Equal(core.StringPtr("testString"))) Expect(getDrLocationsOptionsModel.Headers).To(Equal(map[string]string{"foo": "bar"})) }) It(`Invoke NewGetDrManagedVMOptions successfully`, func() { // Construct an instance of the GetDrManagedVMOptions model - instanceID := "crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::" + instanceID := "123456d3-1122-3344-b67d-4389b44b7bf9" getDrManagedVMOptionsModel := drAutomationServiceService.NewGetDrManagedVMOptions(instanceID) - getDrManagedVMOptionsModel.SetInstanceID("crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::") + getDrManagedVMOptionsModel.SetInstanceID("123456d3-1122-3344-b67d-4389b44b7bf9") getDrManagedVMOptionsModel.SetAcceptLanguage("testString") - getDrManagedVMOptionsModel.SetIfNoneMatch("testString") getDrManagedVMOptionsModel.SetHeaders(map[string]string{"foo": "bar"}) Expect(getDrManagedVMOptionsModel).ToNot(BeNil()) - Expect(getDrManagedVMOptionsModel.InstanceID).To(Equal(core.StringPtr("crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::"))) + Expect(getDrManagedVMOptionsModel.InstanceID).To(Equal(core.StringPtr("123456d3-1122-3344-b67d-4389b44b7bf9"))) Expect(getDrManagedVMOptionsModel.AcceptLanguage).To(Equal(core.StringPtr("testString"))) - Expect(getDrManagedVMOptionsModel.IfNoneMatch).To(Equal(core.StringPtr("testString"))) Expect(getDrManagedVMOptionsModel.Headers).To(Equal(map[string]string{"foo": "bar"})) }) It(`Invoke NewGetDrSummaryOptions successfully`, func() { // Construct an instance of the GetDrSummaryOptions model - instanceID := "crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::" + instanceID := "123456d3-1122-3344-b67d-4389b44b7bf9" getDrSummaryOptionsModel := drAutomationServiceService.NewGetDrSummaryOptions(instanceID) - getDrSummaryOptionsModel.SetInstanceID("crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::") + getDrSummaryOptionsModel.SetInstanceID("123456d3-1122-3344-b67d-4389b44b7bf9") getDrSummaryOptionsModel.SetAcceptLanguage("testString") - getDrSummaryOptionsModel.SetIfNoneMatch("testString") getDrSummaryOptionsModel.SetHeaders(map[string]string{"foo": "bar"}) Expect(getDrSummaryOptionsModel).ToNot(BeNil()) - Expect(getDrSummaryOptionsModel.InstanceID).To(Equal(core.StringPtr("crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::"))) + Expect(getDrSummaryOptionsModel.InstanceID).To(Equal(core.StringPtr("123456d3-1122-3344-b67d-4389b44b7bf9"))) Expect(getDrSummaryOptionsModel.AcceptLanguage).To(Equal(core.StringPtr("testString"))) - Expect(getDrSummaryOptionsModel.IfNoneMatch).To(Equal(core.StringPtr("testString"))) Expect(getDrSummaryOptionsModel.Headers).To(Equal(map[string]string{"foo": "bar"})) }) It(`Invoke NewGetEventOptions successfully`, func() { // Construct an instance of the GetEventOptions model - instanceID := "crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::" + instanceID := "123456d3-1122-3344-b67d-4389b44b7bf9" eventID := "00116b2a-9326-4024-839e-fb5364b76898" getEventOptionsModel := drAutomationServiceService.NewGetEventOptions(instanceID, eventID) - getEventOptionsModel.SetInstanceID("crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::") + getEventOptionsModel.SetInstanceID("123456d3-1122-3344-b67d-4389b44b7bf9") getEventOptionsModel.SetEventID("00116b2a-9326-4024-839e-fb5364b76898") getEventOptionsModel.SetAcceptLanguage("testString") - getEventOptionsModel.SetIfNoneMatch("testString") getEventOptionsModel.SetHeaders(map[string]string{"foo": "bar"}) Expect(getEventOptionsModel).ToNot(BeNil()) - Expect(getEventOptionsModel.InstanceID).To(Equal(core.StringPtr("crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::"))) + Expect(getEventOptionsModel.InstanceID).To(Equal(core.StringPtr("123456d3-1122-3344-b67d-4389b44b7bf9"))) Expect(getEventOptionsModel.EventID).To(Equal(core.StringPtr("00116b2a-9326-4024-839e-fb5364b76898"))) Expect(getEventOptionsModel.AcceptLanguage).To(Equal(core.StringPtr("testString"))) - Expect(getEventOptionsModel.IfNoneMatch).To(Equal(core.StringPtr("testString"))) Expect(getEventOptionsModel.Headers).To(Equal(map[string]string{"foo": "bar"})) }) It(`Invoke NewGetLastOperationOptions successfully`, func() { // Construct an instance of the GetLastOperationOptions model - instanceID := "crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::" + instanceID := "123456d3-1122-3344-b67d-4389b44b7bf9" getLastOperationOptionsModel := drAutomationServiceService.NewGetLastOperationOptions(instanceID) - getLastOperationOptionsModel.SetInstanceID("crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::") + getLastOperationOptionsModel.SetInstanceID("123456d3-1122-3344-b67d-4389b44b7bf9") getLastOperationOptionsModel.SetAcceptLanguage("testString") - getLastOperationOptionsModel.SetIfNoneMatch("testString") getLastOperationOptionsModel.SetHeaders(map[string]string{"foo": "bar"}) Expect(getLastOperationOptionsModel).ToNot(BeNil()) - Expect(getLastOperationOptionsModel.InstanceID).To(Equal(core.StringPtr("crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::"))) + Expect(getLastOperationOptionsModel.InstanceID).To(Equal(core.StringPtr("123456d3-1122-3344-b67d-4389b44b7bf9"))) Expect(getLastOperationOptionsModel.AcceptLanguage).To(Equal(core.StringPtr("testString"))) - Expect(getLastOperationOptionsModel.IfNoneMatch).To(Equal(core.StringPtr("testString"))) Expect(getLastOperationOptionsModel.Headers).To(Equal(map[string]string{"foo": "bar"})) }) It(`Invoke NewGetMachineTypeOptions successfully`, func() { // Construct an instance of the GetMachineTypeOptions model - instanceID := "crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::" + instanceID := "123456d3-1122-3344-b67d-4389b44b7bf9" primaryWorkspaceName := "Test-workspace-wdc06" getMachineTypeOptionsModel := drAutomationServiceService.NewGetMachineTypeOptions(instanceID, primaryWorkspaceName) - getMachineTypeOptionsModel.SetInstanceID("crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::") + getMachineTypeOptionsModel.SetInstanceID("123456d3-1122-3344-b67d-4389b44b7bf9") getMachineTypeOptionsModel.SetPrimaryWorkspaceName("Test-workspace-wdc06") getMachineTypeOptionsModel.SetAcceptLanguage("testString") - getMachineTypeOptionsModel.SetIfNoneMatch("testString") getMachineTypeOptionsModel.SetStandbyWorkspaceName("Test-workspace-wdc07") getMachineTypeOptionsModel.SetHeaders(map[string]string{"foo": "bar"}) Expect(getMachineTypeOptionsModel).ToNot(BeNil()) - Expect(getMachineTypeOptionsModel.InstanceID).To(Equal(core.StringPtr("crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::"))) + Expect(getMachineTypeOptionsModel.InstanceID).To(Equal(core.StringPtr("123456d3-1122-3344-b67d-4389b44b7bf9"))) Expect(getMachineTypeOptionsModel.PrimaryWorkspaceName).To(Equal(core.StringPtr("Test-workspace-wdc06"))) Expect(getMachineTypeOptionsModel.AcceptLanguage).To(Equal(core.StringPtr("testString"))) - Expect(getMachineTypeOptionsModel.IfNoneMatch).To(Equal(core.StringPtr("testString"))) Expect(getMachineTypeOptionsModel.StandbyWorkspaceName).To(Equal(core.StringPtr("Test-workspace-wdc07"))) Expect(getMachineTypeOptionsModel.Headers).To(Equal(map[string]string{"foo": "bar"})) }) It(`Invoke NewGetManageDrOptions successfully`, func() { // Construct an instance of the GetManageDrOptions model - instanceID := "crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::" + instanceID := "123456d3-1122-3344-b67d-4389b44b7bf9" getManageDrOptionsModel := drAutomationServiceService.NewGetManageDrOptions(instanceID) - getManageDrOptionsModel.SetInstanceID("crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::") + getManageDrOptionsModel.SetInstanceID("123456d3-1122-3344-b67d-4389b44b7bf9") getManageDrOptionsModel.SetAcceptLanguage("testString") - getManageDrOptionsModel.SetIfNoneMatch("testString") getManageDrOptionsModel.SetHeaders(map[string]string{"foo": "bar"}) Expect(getManageDrOptionsModel).ToNot(BeNil()) - Expect(getManageDrOptionsModel.InstanceID).To(Equal(core.StringPtr("crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::"))) + Expect(getManageDrOptionsModel.InstanceID).To(Equal(core.StringPtr("123456d3-1122-3344-b67d-4389b44b7bf9"))) Expect(getManageDrOptionsModel.AcceptLanguage).To(Equal(core.StringPtr("testString"))) - Expect(getManageDrOptionsModel.IfNoneMatch).To(Equal(core.StringPtr("testString"))) Expect(getManageDrOptionsModel.Headers).To(Equal(map[string]string{"foo": "bar"})) }) It(`Invoke NewGetPowervsWorkspacesOptions successfully`, func() { // Construct an instance of the GetPowervsWorkspacesOptions model - instanceID := "crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::" + instanceID := "123456d3-1122-3344-b67d-4389b44b7bf9" locationID := "testString" getPowervsWorkspacesOptionsModel := drAutomationServiceService.NewGetPowervsWorkspacesOptions(instanceID, locationID) - getPowervsWorkspacesOptionsModel.SetInstanceID("crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::") + getPowervsWorkspacesOptionsModel.SetInstanceID("123456d3-1122-3344-b67d-4389b44b7bf9") getPowervsWorkspacesOptionsModel.SetLocationID("testString") - getPowervsWorkspacesOptionsModel.SetIfNoneMatch("testString") getPowervsWorkspacesOptionsModel.SetHeaders(map[string]string{"foo": "bar"}) Expect(getPowervsWorkspacesOptionsModel).ToNot(BeNil()) - Expect(getPowervsWorkspacesOptionsModel.InstanceID).To(Equal(core.StringPtr("crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::"))) + Expect(getPowervsWorkspacesOptionsModel.InstanceID).To(Equal(core.StringPtr("123456d3-1122-3344-b67d-4389b44b7bf9"))) Expect(getPowervsWorkspacesOptionsModel.LocationID).To(Equal(core.StringPtr("testString"))) - Expect(getPowervsWorkspacesOptionsModel.IfNoneMatch).To(Equal(core.StringPtr("testString"))) Expect(getPowervsWorkspacesOptionsModel.Headers).To(Equal(map[string]string{"foo": "bar"})) }) It(`Invoke NewListEventsOptions successfully`, func() { // Construct an instance of the ListEventsOptions model - instanceID := "crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::" + instanceID := "123456d3-1122-3344-b67d-4389b44b7bf9" listEventsOptionsModel := drAutomationServiceService.NewListEventsOptions(instanceID) - listEventsOptionsModel.SetInstanceID("crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::") + listEventsOptionsModel.SetInstanceID("123456d3-1122-3344-b67d-4389b44b7bf9") listEventsOptionsModel.SetTime("2025-06-19T23:59:59Z") listEventsOptionsModel.SetFromTime("2025-06-19T00:00:00Z") listEventsOptionsModel.SetToTime("2025-06-19T23:59:59Z") listEventsOptionsModel.SetAcceptLanguage("testString") - listEventsOptionsModel.SetIfNoneMatch("testString") listEventsOptionsModel.SetHeaders(map[string]string{"foo": "bar"}) Expect(listEventsOptionsModel).ToNot(BeNil()) - Expect(listEventsOptionsModel.InstanceID).To(Equal(core.StringPtr("crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::"))) + Expect(listEventsOptionsModel.InstanceID).To(Equal(core.StringPtr("123456d3-1122-3344-b67d-4389b44b7bf9"))) Expect(listEventsOptionsModel.Time).To(Equal(core.StringPtr("2025-06-19T23:59:59Z"))) Expect(listEventsOptionsModel.FromTime).To(Equal(core.StringPtr("2025-06-19T00:00:00Z"))) Expect(listEventsOptionsModel.ToTime).To(Equal(core.StringPtr("2025-06-19T23:59:59Z"))) Expect(listEventsOptionsModel.AcceptLanguage).To(Equal(core.StringPtr("testString"))) - Expect(listEventsOptionsModel.IfNoneMatch).To(Equal(core.StringPtr("testString"))) Expect(listEventsOptionsModel.Headers).To(Equal(map[string]string{"foo": "bar"})) }) It(`Invoke NewUpdateApikeyOptions successfully`, func() { // Construct an instance of the UpdateApikeyOptions model - instanceID := "crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::" + instanceID := "123456d3-1122-3344-b67d-4389b44b7bf9" updateApikeyOptionsAPIKey := "adfadfdsafsdfdsf" updateApikeyOptionsModel := drAutomationServiceService.NewUpdateApikeyOptions(instanceID, updateApikeyOptionsAPIKey) - updateApikeyOptionsModel.SetInstanceID("crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::") + updateApikeyOptionsModel.SetInstanceID("123456d3-1122-3344-b67d-4389b44b7bf9") updateApikeyOptionsModel.SetAPIKey("adfadfdsafsdfdsf") updateApikeyOptionsModel.SetAcceptLanguage("testString") - updateApikeyOptionsModel.SetIfNoneMatch("testString") updateApikeyOptionsModel.SetHeaders(map[string]string{"foo": "bar"}) Expect(updateApikeyOptionsModel).ToNot(BeNil()) - Expect(updateApikeyOptionsModel.InstanceID).To(Equal(core.StringPtr("crn:v1:staging:public:power-dr-automation:global:a/a123456fb04ceebfb4a9fd38c22334455:123456d3-1122-3344-b67d-4389b44b7bf9::"))) + Expect(updateApikeyOptionsModel.InstanceID).To(Equal(core.StringPtr("123456d3-1122-3344-b67d-4389b44b7bf9"))) Expect(updateApikeyOptionsModel.APIKey).To(Equal(core.StringPtr("adfadfdsafsdfdsf"))) Expect(updateApikeyOptionsModel.AcceptLanguage).To(Equal(core.StringPtr("testString"))) - Expect(updateApikeyOptionsModel.IfNoneMatch).To(Equal(core.StringPtr("testString"))) Expect(updateApikeyOptionsModel.Headers).To(Equal(map[string]string{"foo": "bar"})) }) }) diff --git a/ibm/service/drautomationservice/resource_ibm_pdr_managedr.go b/ibm/service/drautomationservice/resource_ibm_pdr_managedr.go index 775971bcad..9c98844092 100644 --- a/ibm/service/drautomationservice/resource_ibm_pdr_managedr.go +++ b/ibm/service/drautomationservice/resource_ibm_pdr_managedr.go @@ -130,38 +130,33 @@ func ResourceIbmPdrManagedr() *schema.Resource { "location_id": { Type: schema.TypeString, ForceNew: true, - Optional: true, + Required: true, }, "machine_type": { Type: schema.TypeString, - Optional: true, + Required: true, ForceNew: true, }, "orchestrator_location_type": { Type: schema.TypeString, - Optional: true, + Required: true, ForceNew: true, }, "orchestrator_name": { Type: schema.TypeString, + Required: true, ForceNew: true, - Optional: true, }, "orchestrator_password": { Type: schema.TypeString, Sensitive: true, ForceNew: true, - Optional: true, + Required: true, }, "orchestrator_workspace_id": { Type: schema.TypeString, ForceNew: true, - Optional: true, - }, - "orchestrator_workspace_location": { - Type: schema.TypeString, - ForceNew: true, - Optional: true, + Required: true, }, "region_id": { Type: schema.TypeString, @@ -173,11 +168,6 @@ func ResourceIbmPdrManagedr() *schema.Resource { ForceNew: true, Optional: true, }, - "secondary_workspace_id": { - Type: schema.TypeString, - Optional: true, - ForceNew: true, - }, "secret": { Type: schema.TypeString, Optional: true, @@ -208,11 +198,6 @@ func ResourceIbmPdrManagedr() *schema.Resource { Optional: true, ForceNew: true, }, - "standby_orchestrator_workspace_location": { - Type: schema.TypeString, - Optional: true, - ForceNew: true, - }, "standby_tier": { Type: schema.TypeString, Optional: true, @@ -286,9 +271,6 @@ func resourceIbmPdrManagedrCreate(ctx context.Context, d *schema.ResourceData, m if _, ok := d.GetOk("orchestrator_workspace_id"); ok { createManageDrOptions.SetOrchestratorWorkspaceID(d.Get("orchestrator_workspace_id").(string)) } - if _, ok := d.GetOk("orchestrator_workspace_location"); ok { - createManageDrOptions.SetOrchestratorWorkspaceLocation(d.Get("orchestrator_workspace_location").(string)) - } if _, ok := d.GetOk("region_id"); ok { createManageDrOptions.SetRegionID(d.Get("region_id").(string)) } @@ -304,9 +286,6 @@ func resourceIbmPdrManagedrCreate(ctx context.Context, d *schema.ResourceData, m if _, ok := d.GetOk("resource_instance"); ok { createManageDrOptions.SetResourceInstance(d.Get("resource_instance").(string)) } - if _, ok := d.GetOk("secondary_workspace_id"); ok { - createManageDrOptions.SetSecondaryWorkspaceID(d.Get("secondary_workspace_id").(string)) - } if _, ok := d.GetOk("secret"); ok { createManageDrOptions.SetSecret(d.Get("secret").(string)) } @@ -325,9 +304,6 @@ func resourceIbmPdrManagedrCreate(ctx context.Context, d *schema.ResourceData, m if _, ok := d.GetOk("standby_orchestrator_workspace_id"); ok { createManageDrOptions.SetStandbyOrchestratorWorkspaceID(d.Get("standby_orchestrator_workspace_id").(string)) } - if _, ok := d.GetOk("standby_orchestrator_workspace_location"); ok { - createManageDrOptions.SetStandbyOrchestratorWorkspaceLocation(d.Get("standby_orchestrator_workspace_location").(string)) - } if _, ok := d.GetOk("standby_tier"); ok { createManageDrOptions.SetStandbyTier(d.Get("standby_tier").(string)) } @@ -337,14 +313,11 @@ func resourceIbmPdrManagedrCreate(ctx context.Context, d *schema.ResourceData, m if _, ok := d.GetOk("accept_language"); ok { createManageDrOptions.SetAcceptLanguage(d.Get("accept_language").(string)) } - // if _, ok := d.GetOk("if_none_match"); ok { - // createManageDrOptions.SetIfNoneMatch(d.Get("if_none_match").(string)) - // } if _, ok := d.GetOk("accepts_incomplete"); ok { createManageDrOptions.SetAcceptsIncomplete(d.Get("accepts_incomplete").(bool)) } - serviceInstanceManageDr, response, err := drAutomationServiceClient.CreateManageDrWithContext(ctx, createManageDrOptions) + _, response, err := drAutomationServiceClient.CreateManageDrWithContext(ctx, createManageDrOptions) if err != nil { detailedMsg := fmt.Sprintf("CreateManageDrWithContext failed: %s", err.Error()) // Include HTTP status & raw body if available @@ -359,7 +332,7 @@ func resourceIbmPdrManagedrCreate(ctx context.Context, d *schema.ResourceData, m return tfErr.GetDiag() } - d.SetId(fmt.Sprintf("%s", *serviceInstanceManageDr.ID)) + d.SetId(d.Get("instance_id").(string)) // Step 2: Poll Last Operation status every 5 minutes until Active or Fail instanceID := *createManageDrOptions.InstanceID const ( @@ -482,7 +455,7 @@ func resourceIbmPdrManagedrRead(context context.Context, d *schema.ResourceData, getManageDrOptions := &drautomationservicev1.GetManageDrOptions{} - instanceID := d.Get("instance_id").(string) + instanceID := d.Id() log.Printf("[DEBUG] Read operation using instance ID from resource: %s", instanceID) @@ -491,9 +464,6 @@ func resourceIbmPdrManagedrRead(context context.Context, d *schema.ResourceData, // if _, ok := d.GetOk("accept_language"); ok { // getManageDrOptions.SetAcceptLanguage(d.Get("accept_language").(string)) // } - // if _, ok := d.GetOk("if_none_match"); ok { - // getManageDrOptions.SetIfNoneMatch(d.Get("if_none_match").(string)) - // } serviceInstanceManageDr, response, err := drAutomationServiceClient.GetManageDrWithContext(context, getManageDrOptions) if err != nil { diff --git a/ibm/service/drautomationservice/resource_ibm_pdr_validate_apikey_test.go b/ibm/service/drautomationservice/resource_ibm_pdr_validate_apikey_test.go index 145ddebc94..a3af8f2c24 100644 --- a/ibm/service/drautomationservice/resource_ibm_pdr_validate_apikey_test.go +++ b/ibm/service/drautomationservice/resource_ibm_pdr_validate_apikey_test.go @@ -19,7 +19,7 @@ import ( func TestAccIBMPdrValidateApikeyBasic(t *testing.T) { var conf drautomationservicev1.ValidationKeyResponse - instanceID := "crn:v1:staging:public:power-dr-automation:global:a/b68c234e719144b18598ae4a7b80c44c:492fef47-3ebf-4090-b089-e9b4199878b6::" + instanceID := "123456d3-1122-3344-b67d-4389b44b7bf9" resource.Test(t, resource.TestCase{ PreCheck: func() { acc.TestAccPreCheck(t) }, @@ -38,7 +38,7 @@ func TestAccIBMPdrValidateApikeyBasic(t *testing.T) { func TestAccIBMPdrValidateApikeyAllArgs(t *testing.T) { var conf drautomationservicev1.ValidationKeyResponse - instanceID := "crn:v1:staging:public:power-dr-automation:global:a/b68c234e719144b18598ae4a7b80c44c:492fef47-3ebf-4090-b089-e9b4199878b6::" + instanceID := "123456d3-1122-3344-b67d-4389b44b7bf9" acceptLanguage := fmt.Sprintf("tf_accept_language_%d", acctest.RandIntRange(10, 100)) acceptLanguageUpdate := fmt.Sprintf("tf_accept_language_%d", acctest.RandIntRange(10, 100))