// This is an automatically generated code sample.
// To make this code sample work in your Oracle Cloud tenancy,
// please replace the values for any parameters whose current values do not fit
// your use case (such as resource IDs, strings containing ‘EXAMPLE’ or ‘unique_id’, and
// boolean, number, and enum parameters with values not fitting your use case).

package main

import (
	"context"
	"fmt"

	"github.com/oracle/oci-go-sdk/v65/common"
	"github.com/oracle/oci-go-sdk/v65/disasterrecovery"
	"github.com/oracle/oci-go-sdk/v65/example/helpers"
)

func ExampleUpdateDrProtectionGroup() {
	// Create a default authentication provider that uses the DEFAULT
	// profile in the configuration file.
	// Refer to <see href="https://docs.cloud.oracle.com/en-us/iaas/Content/API/Concepts/sdkconfig.htm#SDK_and_CLI_Configuration_File>the public documentation</see> on how to prepare a configuration file.
	client, err := disasterrecovery.NewDisasterRecoveryClientWithConfigurationProvider(common.DefaultConfigProvider())
	helpers.FatalIfError(err)

	// Create a request and dependent object(s).

	req := disasterrecovery.UpdateDrProtectionGroupRequest{DrProtectionGroupId: common.String("ocid1.test.oc1..<unique_ID>EXAMPLE-drProtectionGroupId-Value"),
		IfMatch:      common.String("EXAMPLE-ifMatch-Value"),
		OpcRequestId: common.String("VOLRU5GJEAIUNETU4XMA<unique_ID>"),
		UpdateDrProtectionGroupDetails: disasterrecovery.UpdateDrProtectionGroupDetails{DefinedTags: map[string]map[string]interface{}{"EXAMPLE_KEY_pctym": map[string]interface{}{"EXAMPLE_KEY_0rDuh": "EXAMPLE--Value"}},
			DisplayName:  common.String("EXAMPLE-displayName-Value"),
			FreeformTags: map[string]string{"EXAMPLE_KEY_Y6j0D": "EXAMPLE_VALUE_1c2xwUC7fuoYy4dtciBW"},
			LogLocation: &disasterrecovery.UpdateObjectStorageLogLocationDetails{Bucket: common.String("EXAMPLE-bucket-Value"),
				Namespace: common.String("EXAMPLE-namespace-Value")},
			Members: []disasterrecovery.UpdateDrProtectionGroupMemberDetails{disasterrecovery.UpdateDrProtectionGroupMemberOkeClusterDetails{BackupLocation: &disasterrecovery.UpdateOkeBackupLocationDetails{Bucket: common.String("EXAMPLE-bucket-Value"),
				Namespace: common.String("EXAMPLE-namespace-Value")},
				JumpHostId: common.String("ocid1.test.oc1..<unique_ID>EXAMPLE-jumpHostId-Value"),
				LoadBalancerMappings: []disasterrecovery.UpdateOkeClusterLoadBalancerMappingDetails{disasterrecovery.UpdateOkeClusterLoadBalancerMappingDetails{SourceLoadBalancerId: common.String("ocid1.test.oc1..<unique_ID>EXAMPLE-sourceLoadBalancerId-Value"),
					DestinationLoadBalancerId: common.String("ocid1.test.oc1..<unique_ID>EXAMPLE-destinationLoadBalancerId-Value")}},
				NetworkLoadBalancerMappings: []disasterrecovery.UpdateOkeClusterNetworkLoadBalancerMappingDetails{disasterrecovery.UpdateOkeClusterNetworkLoadBalancerMappingDetails{DestinationNetworkLoadBalancerId: common.String("ocid1.test.oc1..<unique_ID>EXAMPLE-destinationNetworkLoadBalancerId-Value"),
					SourceNetworkLoadBalancerId: common.String("ocid1.test.oc1..<unique_ID>EXAMPLE-sourceNetworkLoadBalancerId-Value")}},
				VaultMappings: []disasterrecovery.UpdateOkeClusterVaultMappingDetails{disasterrecovery.UpdateOkeClusterVaultMappingDetails{DestinationVaultId: common.String("ocid1.test.oc1..<unique_ID>EXAMPLE-destinationVaultId-Value"),
					SourceVaultId: common.String("ocid1.test.oc1..<unique_ID>EXAMPLE-sourceVaultId-Value")}},
				VirtualNodePoolConfigs: []disasterrecovery.UpdateOkeClusterVirtualNodePoolConfigurationDetails{disasterrecovery.UpdateOkeClusterVirtualNodePoolConfigurationDetails{Id: common.String("ocid1.test.oc1..<unique_ID>EXAMPLE-id-Value"),
					Maximum: common.Int(283),
					Minimum: common.Int(142)}},
				ManagedNodePoolConfigs: []disasterrecovery.UpdateOkeClusterManagedNodePoolConfigurationDetails{disasterrecovery.UpdateOkeClusterManagedNodePoolConfigurationDetails{Maximum: common.Int(611),
					Minimum: common.Int(863),
					Id:      common.String("ocid1.test.oc1..<unique_ID>EXAMPLE-id-Value")}},
				MemberId:      common.String("ocid1.test.oc1..<unique_ID>EXAMPLE-memberId-Value"),
				PeerClusterId: common.String("ocid1.test.oc1..<unique_ID>EXAMPLE-peerClusterId-Value"),
				ResourceModifierMappings: []disasterrecovery.UpdateOkeClusterResourceModifierMappingDetails{disasterrecovery.UpdateOkeClusterResourceModifierMappingDetails{ConfigMap: common.String("EXAMPLE-configMap-Value"),
					Namespace: common.String("EXAMPLE-namespace-Value")}},
				BackupConfig: &disasterrecovery.UpdateOkeClusterBackupConfigDetails{ImageReplicationVaultSecretId: common.String("ocid1.test.oc1..<unique_ID>EXAMPLE-imageReplicationVaultSecretId-Value"),
					MaxNumberOfBackupsRetained: common.Int(12),
					Namespaces:                 []string{"EXAMPLE--Value"},
					ReplicateImages:            disasterrecovery.OkeClusterImageReplicationEnable,
					BackupSchedule:             common.String("EXAMPLE-backupSchedule-Value"),
					ExcludeNamespaces:          []string{"EXAMPLE--Value"}}}}}}

	// Send the request using the service client
	resp, err := client.UpdateDrProtectionGroup(context.Background(), req)
	helpers.FatalIfError(err)

	// Retrieve value from the response.
	fmt.Println(resp)
}