// 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).

import * as core from "oci-core";
import common = require("oci-common");

// 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.

const provider: common.ConfigFileAuthenticationDetailsProvider = new common.ConfigFileAuthenticationDetailsProvider();

(async () => {
    try {
     // Create a service client
     const client = new core.ComputeManagementClient({ authenticationDetailsProvider: provider });

     // Create a request and dependent object(s).
	const  instanceConfigurationInstanceDetails = {
		instanceType: "instance_options",		options: [{
				instanceType: "compute",				blockVolumes: [{
						attachDetails: {
							type: "paravirtualized",							isPvEncryptionInTransitEnabled: false,
							displayName: "EXAMPLE-displayName-Value",
							isReadOnly: false,
							device: "EXAMPLE-device-Value",
							isShareable: false

							}
,
						createDetails: {
							availabilityDomain: "EXAMPLE-availabilityDomain-Value",
							backupPolicyId: "ocid1.test.oc1..<unique_ID>EXAMPLE-backupPolicyId-Value",
							compartmentId: "ocid1.test.oc1..<unique_ID>EXAMPLE-compartmentId-Value",
							isAutoTuneEnabled: false,
							blockVolumeReplicas: [{
									displayName: "EXAMPLE-displayName-Value",
									availabilityDomain: "EXAMPLE-availabilityDomain-Value",

									}
									],
							definedTags: {
								EXAMPLE_KEY_aHqTg :{
									EXAMPLE_KEY_FgeRa :"EXAMPLE--Value"
									}
								},
							displayName: "EXAMPLE-displayName-Value",
							freeformTags: {
								EXAMPLE_KEY_pLzcU :"EXAMPLE_VALUE_cnScqoy5zXHTXpsNSyib"
								},
							kmsKeyId: "ocid1.test.oc1..<unique_ID>EXAMPLE-kmsKeyId-Value",
							vpusPerGB: 769,
							clusterPlacementGroupId: "ocid1.test.oc1..<unique_ID>EXAMPLE-clusterPlacementGroupId-Value",
							sizeInGBs: 914,
							sourceDetails: {
								type: "volume",								id: "ocid1.test.oc1..<unique_ID>EXAMPLE-id-Value"

								}
,
							autotunePolicies: [{
									autotuneType: "PERFORMANCE_BASED",									maxVpusPerGB: 942

									}
									],
							xrcKmsKeyId: "ocid1.test.oc1..<unique_ID>EXAMPLE-xrcKmsKeyId-Value",
							isReservationsEnabled: true,

							}
,
						volumeId: "ocid1.test.oc1..<unique_ID>EXAMPLE-volumeId-Value",

						}
						],
				launchDetails: {
					availabilityDomain: "EXAMPLE-availabilityDomain-Value",
					capacityReservationId: "ocid1.test.oc1..<unique_ID>EXAMPLE-capacityReservationId-Value",
					isAIEnterpriseEnabled: false,
					placementConstraintDetails: {
						type: "HOST_GROUP",						computeHostGroupId: "ocid1.test.oc1..<unique_ID>EXAMPLE-computeHostGroupId-Value"

						}
,
					computeClusterId: "ocid1.test.oc1..<unique_ID>EXAMPLE-computeClusterId-Value",
					compartmentId: "ocid1.test.oc1..<unique_ID>EXAMPLE-compartmentId-Value",
					clusterPlacementGroupId: "ocid1.test.oc1..<unique_ID>EXAMPLE-clusterPlacementGroupId-Value",
					createVnicDetails: {
						assignIpv6Ip: false,
						assignPublicIp: false,
						assignPrivateDnsRecord: false,
						definedTags: {
							EXAMPLE_KEY_2BFUF :{
								EXAMPLE_KEY_VsqzF :"EXAMPLE--Value"
								}
							},
						displayName: "EXAMPLE-displayName-Value",
						freeformTags: {
							EXAMPLE_KEY_QZtYr :"EXAMPLE_VALUE_2SSdhbQNAuVLNqqV3aEd"
							},
						securityAttributes: {
							EXAMPLE_KEY_GcATZ :{
								EXAMPLE_KEY_TAKcs :"EXAMPLE--Value"
								}
							},
						ipv6AddressIpv6SubnetCidrPairDetails: [{
								ipv6SubnetCidr: "EXAMPLE-ipv6SubnetCidr-Value",
								ipv6Address: "EXAMPLE-ipv6Address-Value",
								ipv6Id: "ocid1.test.oc1..<unique_ID>EXAMPLE-ipv6Id-Value",

								}
								],
						hostnameLabel: "EXAMPLE-hostnameLabel-Value",
						nsgIds: ["EXAMPLE--Value"								],
						subnetCidr: "EXAMPLE-subnetCidr-Value",
						privateIp: "EXAMPLE-privateIp-Value",
						privateIpId: "ocid1.test.oc1..<unique_ID>EXAMPLE-privateIpId-Value",
						skipSourceDestCheck: false,
						subnetId: "ocid1.test.oc1..<unique_ID>EXAMPLE-subnetId-Value",

						}
,
					definedTags: {
						EXAMPLE_KEY_GmSKr :{
							EXAMPLE_KEY_ExsvO :"EXAMPLE--Value"
							}
						},
					securityAttributes: {
						EXAMPLE_KEY_WkYfc :{
							EXAMPLE_KEY_FAQPh :"EXAMPLE--Value"
							}
						},
					displayName: "EXAMPLE-displayName-Value",
					extendedMetadata: {
						EXAMPLE_KEY_fFj30 :"EXAMPLE--Value"
						},
					freeformTags: {
						EXAMPLE_KEY_vTa6j :"EXAMPLE_VALUE_teFATXkQgKhMYaKWKBwK"
						},
					ipxeScript: "EXAMPLE-ipxeScript-Value",
					metadata: {
						EXAMPLE_KEY_dhX6M :"EXAMPLE_VALUE_5wnqmMoX5rzfntgg44pf"
						},
					shape: "EXAMPLE-shape-Value",
					shapeConfig: {
						ocpus: 4051.656,
						vcpus: 896,
						memoryInGBs: 6266.0073,
						baselineOcpuUtilization: core.models.InstanceConfigurationLaunchInstanceShapeConfigDetails.BaselineOcpuUtilization.Baseline18,
						nvmes: 4,
						resourceManagement: core.models.InstanceConfigurationLaunchInstanceShapeConfigDetails.ResourceManagement.Static,

						}
,
					platformConfig: {
						type: "AMD_VM",						isSymmetricMultiThreadingEnabled: false,
						isSecureBootEnabled: true,
						isTrustedPlatformModuleEnabled: false,
						isMeasuredBootEnabled: true,
						isMemoryEncryptionEnabled: true

						}
,
					sourceDetails: {
						sourceType: "image",						bootVolumeSizeInGBs: 335,
						imageId: "ocid1.test.oc1..<unique_ID>EXAMPLE-imageId-Value",
						kmsKeyId: "ocid1.test.oc1..<unique_ID>EXAMPLE-kmsKeyId-Value",
						bootVolumeVpusPerGB: 577,
						instanceSourceImageFilterDetails: {
							compartmentId: "ocid1.test.oc1..<unique_ID>EXAMPLE-compartmentId-Value",
							definedTagsFilter: {
								EXAMPLE_KEY_sdZI8 :{
									EXAMPLE_KEY_GrLnc :"EXAMPLE--Value"
									}
								},
							operatingSystem: "EXAMPLE-operatingSystem-Value",
							operatingSystemVersion: "EXAMPLE-operatingSystemVersion-Value",

							}


						}
,
					faultDomain: "EXAMPLE-faultDomain-Value",
					dedicatedVmHostId: "ocid1.test.oc1..<unique_ID>EXAMPLE-dedicatedVmHostId-Value",
					launchMode: core.models.InstanceConfigurationLaunchInstanceDetails.LaunchMode.Custom,
					launchOptions: {
						bootVolumeType: core.models.InstanceConfigurationLaunchOptions.BootVolumeType.Vfio,
						firmware: core.models.InstanceConfigurationLaunchOptions.Firmware.Uefi64,
						networkType: core.models.InstanceConfigurationLaunchOptions.NetworkType.Vfio,
						remoteDataVolumeType: core.models.InstanceConfigurationLaunchOptions.RemoteDataVolumeType.Vfio,
						isPvEncryptionInTransitEnabled: true,
						isConsistentVolumeNamingEnabled: true,

						}
,
					agentConfig: {
						isMonitoringDisabled: false,
						isManagementDisabled: false,
						areAllPluginsDisabled: true,
						pluginsConfig: [{
								name: "EXAMPLE-name-Value",
								desiredState: core.models.InstanceAgentPluginConfigDetails.DesiredState.Disabled,

								}
								],

						}
,
					isPvEncryptionInTransitEnabled: false,
					preferredMaintenanceAction: core.models.InstanceConfigurationLaunchInstanceDetails.PreferredMaintenanceAction.Reboot,
					instanceOptions: {
						areLegacyImdsEndpointsDisabled: false,

						}
,
					availabilityConfig: {
						isLiveMigrationPreferred: true,
						recoveryAction: core.models.InstanceConfigurationAvailabilityConfig.RecoveryAction.RestoreInstance,

						}
,
					preemptibleInstanceConfig: {
						preemptionAction: {
							type: "TERMINATE",							preserveBootVolume: false

							}
,

						}
,
					licensingConfigs: [{
							type: "WINDOWS",							licenseType: core.models.LaunchInstanceLicensingConfig.LicenseType.OciProvided

							}
							],

					}
,
				secondaryVnics: [{
						createVnicDetails: {
							assignIpv6Ip: false,
							assignPublicIp: false,
							assignPrivateDnsRecord: false,
							definedTags: {
								EXAMPLE_KEY_YB13v :{
									EXAMPLE_KEY_apkPj :"EXAMPLE--Value"
									}
								},
							displayName: "EXAMPLE-displayName-Value",
							freeformTags: {
								EXAMPLE_KEY_u5Ghh :"EXAMPLE_VALUE_5nMixefSmKRQv28BP0dx"
								},
							securityAttributes: {
								EXAMPLE_KEY_LYV8K :{
									EXAMPLE_KEY_EQVBl :"EXAMPLE--Value"
									}
								},
							ipv6AddressIpv6SubnetCidrPairDetails: [{
									ipv6SubnetCidr: "EXAMPLE-ipv6SubnetCidr-Value",
									ipv6Address: "EXAMPLE-ipv6Address-Value",
									ipv6Id: "ocid1.test.oc1..<unique_ID>EXAMPLE-ipv6Id-Value",

									}
									],
							hostnameLabel: "EXAMPLE-hostnameLabel-Value",
							nsgIds: ["EXAMPLE--Value"									],
							subnetCidr: "EXAMPLE-subnetCidr-Value",
							privateIp: "EXAMPLE-privateIp-Value",
							privateIpId: "ocid1.test.oc1..<unique_ID>EXAMPLE-privateIpId-Value",
							skipSourceDestCheck: false,
							subnetId: "ocid1.test.oc1..<unique_ID>EXAMPLE-subnetId-Value",

							}
,
						displayName: "EXAMPLE-displayName-Value",
						nicIndex: 5,

						}
						]

				}
				]

		}

	const launchInstanceConfigurationRequest: core.requests.LaunchInstanceConfigurationRequest = { 
	instanceConfigurationId: "ocid1.test.oc1..<unique_ID>EXAMPLE-instanceConfigurationId-Value",
	instanceConfiguration: instanceConfigurationInstanceDetails,
	opcRetryToken: "EXAMPLE-opcRetryToken-Value",
	opcComputeClusterId: "ocid1.test.oc1..<unique_ID>EXAMPLE-opcComputeClusterId-Value",

		}; 


     // Send request to the Client.
     const launchInstanceConfigurationResponse = await client.launchInstanceConfiguration(launchInstanceConfigurationRequest);
     }
     catch (error) {
         console.log("launchInstanceConfiguration Failed with error  " + error);
     }
})();