"use strict";
// *** WARNING: this file was generated by pulumi-language-nodejs. ***
// *** Do not edit by hand unless you're certain you know what you are doing! ***
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
    if (k2 === undefined) k2 = k;
    var desc = Object.getOwnPropertyDescriptor(m, k);
    if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
      desc = { enumerable: true, get: function() { return m[k]; } };
    }
    Object.defineProperty(o, k2, desc);
}) : (function(o, m, k, k2) {
    if (k2 === undefined) k2 = k;
    o[k2] = m[k];
}));
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
    Object.defineProperty(o, "default", { enumerable: true, value: v });
}) : function(o, v) {
    o["default"] = v;
});
var __importStar = (this && this.__importStar) || function (mod) {
    if (mod && mod.__esModule) return mod;
    var result = {};
    if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
    __setModuleDefault(result, mod);
    return result;
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.InstanceConfiguration = void 0;
const pulumi = __importStar(require("@pulumi/pulumi"));
const utilities = __importStar(require("../utilities"));
/**
 * This resource provides the Instance Configuration resource in Oracle Cloud Infrastructure Core service.
 * Api doc link for the resource: https://docs.oracle.com/iaas/api/#/en/iaas/latest/InstanceConfiguration
 *
 * Example terraform configs related to the resource : https://github.com/oracle/terraform-provider-oci/tree/master/examples/
 *
 * Creates an instance configuration. An instance configuration is a template that defines the
 * settings to use when creating Compute instances.
 *
 * ## Example Usage
 *
 * ```typescript
 * import * as pulumi from "@pulumi/pulumi";
 * import * as oci from "@pulumi/oci";
 *
 * const testInstanceConfiguration = new oci.core.InstanceConfiguration("test_instance_configuration", {
 *     compartmentId: compartmentId,
 *     definedTags: {
 *         "Operations.CostCenter": "42",
 *     },
 *     displayName: instanceConfigurationDisplayName,
 *     freeformTags: {
 *         Department: "Finance",
 *     },
 *     instanceDetails: {
 *         instanceType: instanceConfigurationInstanceDetailsInstanceType,
 *         blockVolumes: [{
 *             attachDetails: {
 *                 type: instanceConfigurationInstanceDetailsBlockVolumesAttachDetailsType,
 *                 device: instanceConfigurationInstanceDetailsBlockVolumesAttachDetailsDevice,
 *                 displayName: instanceConfigurationInstanceDetailsBlockVolumesAttachDetailsDisplayName,
 *                 isPvEncryptionInTransitEnabled: instanceConfigurationInstanceDetailsBlockVolumesAttachDetailsIsPvEncryptionInTransitEnabled === "true",
 *                 isReadOnly: instanceConfigurationInstanceDetailsBlockVolumesAttachDetailsIsReadOnly === "true",
 *                 isShareable: instanceConfigurationInstanceDetailsBlockVolumesAttachDetailsIsShareable === "true",
 *                 useChap: instanceConfigurationInstanceDetailsBlockVolumesAttachDetailsUseChap === "true",
 *             },
 *             createDetails: {
 *                 autotunePolicies: [{
 *                     autotuneType: instanceConfigurationInstanceDetailsBlockVolumesCreateDetailsAutotunePoliciesAutotuneType,
 *                     maxVpusPerGb: instanceConfigurationInstanceDetailsBlockVolumesCreateDetailsAutotunePoliciesMaxVpusPerGb,
 *                 }],
 *                 availabilityDomain: instanceConfigurationInstanceDetailsBlockVolumesCreateDetailsAvailabilityDomain,
 *                 backupPolicyId: testVolumeBackupPolicies.volumeBackupPolicies[0].id,
 *                 blockVolumeReplicas: {
 *                     availabilityDomain: instanceConfigurationInstanceDetailsBlockVolumesCreateDetailsBlockVolumeReplicasAvailabilityDomain,
 *                     displayName: instanceConfigurationInstanceDetailsBlockVolumesCreateDetailsBlockVolumeReplicasDisplayName,
 *                 },
 *                 clusterPlacementGroupId: clusterPlacementGroupId,
 *                 compartmentId: compartmentId,
 *                 definedTags: {
 *                     "Operations.CostCenter": "42",
 *                 },
 *                 displayName: instanceConfigurationInstanceDetailsBlockVolumesCreateDetailsDisplayName,
 *                 freeformTags: {
 *                     Department: "Finance",
 *                 },
 *                 isAutoTuneEnabled: instanceConfigurationInstanceDetailsBlockVolumesCreateDetailsIsAutoTuneEnabled === "true",
 *                 isReservationsEnabled: instanceConfigurationInstanceDetailsBlockVolumesCreateDetailsIsReservationsEnabled,
 *                 kmsKeyId: testKey.id,
 *                 sizeInGbs: instanceConfigurationInstanceDetailsBlockVolumesCreateDetailsSizeInGbs,
 *                 sourceDetails: {
 *                     type: instanceConfigurationInstanceDetailsBlockVolumesCreateDetailsSourceDetailsType,
 *                     id: instanceConfigurationInstanceDetailsBlockVolumesCreateDetailsSourceDetailsId,
 *                 },
 *                 vpusPerGb: instanceConfigurationInstanceDetailsBlockVolumesCreateDetailsVpusPerGb,
 *                 xrcKmsKeyId: testKey.id,
 *             },
 *             volumeId: testVolume.id,
 *         }],
 *         launchDetails: {
 *             agentConfig: {
 *                 areAllPluginsDisabled: instanceConfigurationInstanceDetailsLaunchDetailsAgentConfigAreAllPluginsDisabled === "true",
 *                 isManagementDisabled: instanceConfigurationInstanceDetailsLaunchDetailsAgentConfigIsManagementDisabled === "true",
 *                 isMonitoringDisabled: instanceConfigurationInstanceDetailsLaunchDetailsAgentConfigIsMonitoringDisabled === "true",
 *                 pluginsConfigs: [{
 *                     desiredState: instanceConfigurationInstanceDetailsLaunchDetailsAgentConfigPluginsConfigDesiredState,
 *                     name: instanceConfigurationInstanceDetailsLaunchDetailsAgentConfigPluginsConfigName,
 *                 }],
 *             },
 *             availabilityConfig: {
 *                 isLiveMigrationPreferred: instanceConfigurationInstanceDetailsLaunchDetailsAvailabilityConfigIsLiveMigrationPreferred === "true",
 *                 recoveryAction: instanceConfigurationInstanceDetailsLaunchDetailsAvailabilityConfigRecoveryAction,
 *             },
 *             availabilityDomain: instanceConfigurationInstanceDetailsLaunchDetailsAvailabilityDomain,
 *             capacityReservationId: testCapacityReservation.id,
 *             clusterPlacementGroupId: testGroup.id,
 *             compartmentId: compartmentId,
 *             computeClusterId: testComputeCluster.id,
 *             createVnicDetails: {
 *                 assignIpv6ip: instanceConfigurationInstanceDetailsLaunchDetailsCreateVnicDetailsAssignIpv6ip === "true",
 *                 assignPrivateDnsRecord: instanceConfigurationInstanceDetailsLaunchDetailsCreateVnicDetailsAssignPrivateDnsRecord === "true",
 *                 assignPublicIp: instanceConfigurationInstanceDetailsLaunchDetailsCreateVnicDetailsAssignPublicIp === "true",
 *                 definedTags: {
 *                     "Operations.CostCenter": "42",
 *                 },
 *                 displayName: instanceConfigurationInstanceDetailsLaunchDetailsCreateVnicDetailsDisplayName,
 *                 freeformTags: {
 *                     Department: "Finance",
 *                 },
 *                 hostnameLabel: instanceConfigurationInstanceDetailsLaunchDetailsCreateVnicDetailsHostnameLabel,
 *                 ipv6addressIpv6subnetCidrPairDetails: [{
 *                     ipv6address: instanceConfigurationInstanceDetailsLaunchDetailsCreateVnicDetailsIpv6addressIpv6subnetCidrPairDetailsIpv6address,
 *                     ipv6id: testIpv6.id,
 *                     ipv6subnetCidr: instanceConfigurationInstanceDetailsLaunchDetailsCreateVnicDetailsIpv6addressIpv6subnetCidrPairDetailsIpv6subnetCidr,
 *                 }],
 *                 nsgIds: instanceConfigurationInstanceDetailsLaunchDetailsCreateVnicDetailsNsgIds,
 *                 privateIp: instanceConfigurationInstanceDetailsLaunchDetailsCreateVnicDetailsPrivateIp,
 *                 privateIpId: testPrivateIp.id,
 *                 securityAttributes: instanceConfigurationInstanceDetailsLaunchDetailsCreateVnicDetailsSecurityAttributes,
 *                 skipSourceDestCheck: instanceConfigurationInstanceDetailsLaunchDetailsCreateVnicDetailsSkipSourceDestCheck === "true",
 *                 subnetCidr: instanceConfigurationInstanceDetailsLaunchDetailsCreateVnicDetailsSubnetCidr,
 *                 subnetId: testSubnet.id,
 *             },
 *             dedicatedVmHostId: testDedicatedVmHost.id,
 *             definedTags: {
 *                 "Operations.CostCenter": "42",
 *             },
 *             displayName: instanceConfigurationInstanceDetailsLaunchDetailsDisplayName,
 *             extendedMetadata: instanceConfigurationInstanceDetailsLaunchDetailsExtendedMetadata,
 *             faultDomain: instanceConfigurationInstanceDetailsLaunchDetailsFaultDomain,
 *             freeformTags: {
 *                 Department: "Finance",
 *             },
 *             instanceOptions: {
 *                 areLegacyImdsEndpointsDisabled: instanceConfigurationInstanceDetailsLaunchDetailsInstanceOptionsAreLegacyImdsEndpointsDisabled === "true",
 *             },
 *             ipxeScript: instanceConfigurationInstanceDetailsLaunchDetailsIpxeScript,
 *             isAiEnterpriseEnabled: instanceConfigurationInstanceDetailsLaunchDetailsIsAiEnterpriseEnabled === "true",
 *             isPvEncryptionInTransitEnabled: instanceConfigurationInstanceDetailsLaunchDetailsIsPvEncryptionInTransitEnabled === "true",
 *             launchMode: instanceConfigurationInstanceDetailsLaunchDetailsLaunchMode,
 *             launchOptions: {
 *                 bootVolumeType: instanceConfigurationInstanceDetailsLaunchDetailsLaunchOptionsBootVolumeType,
 *                 firmware: instanceConfigurationInstanceDetailsLaunchDetailsLaunchOptionsFirmware,
 *                 isConsistentVolumeNamingEnabled: instanceConfigurationInstanceDetailsLaunchDetailsLaunchOptionsIsConsistentVolumeNamingEnabled === "true",
 *                 isPvEncryptionInTransitEnabled: instanceConfigurationInstanceDetailsLaunchDetailsLaunchOptionsIsPvEncryptionInTransitEnabled === "true",
 *                 networkType: instanceConfigurationInstanceDetailsLaunchDetailsLaunchOptionsNetworkType,
 *                 remoteDataVolumeType: instanceConfigurationInstanceDetailsLaunchDetailsLaunchOptionsRemoteDataVolumeType,
 *             },
 *             licensingConfigs: {
 *                 type: instanceConfigurationInstanceDetailsLaunchDetailsLicensingConfigsType,
 *                 licenseType: instanceConfigurationInstanceDetailsLaunchDetailsLicensingConfigsLicenseType,
 *             },
 *             metadata: instanceConfigurationInstanceDetailsLaunchDetailsMetadata,
 *             placementConstraintDetails: {
 *                 computeHostGroupId: testComputeHostGroup.id,
 *                 type: instanceConfigurationInstanceDetailsLaunchDetailsPlacementConstraintDetailsType,
 *             },
 *             platformConfig: {
 *                 type: instanceConfigurationInstanceDetailsLaunchDetailsPlatformConfigType,
 *                 areVirtualInstructionsEnabled: instanceConfigurationInstanceDetailsLaunchDetailsPlatformConfigAreVirtualInstructionsEnabled === "true",
 *                 configMap: instanceConfigurationInstanceDetailsLaunchDetailsPlatformConfigConfigMap,
 *                 isAccessControlServiceEnabled: instanceConfigurationInstanceDetailsLaunchDetailsPlatformConfigIsAccessControlServiceEnabled === "true",
 *                 isInputOutputMemoryManagementUnitEnabled: instanceConfigurationInstanceDetailsLaunchDetailsPlatformConfigIsInputOutputMemoryManagementUnitEnabled === "true",
 *                 isMeasuredBootEnabled: instanceConfigurationInstanceDetailsLaunchDetailsPlatformConfigIsMeasuredBootEnabled === "true",
 *                 isMemoryEncryptionEnabled: instanceConfigurationInstanceDetailsLaunchDetailsPlatformConfigIsMemoryEncryptionEnabled === "true",
 *                 isSecureBootEnabled: instanceConfigurationInstanceDetailsLaunchDetailsPlatformConfigIsSecureBootEnabled === "true",
 *                 isSymmetricMultiThreadingEnabled: instanceConfigurationInstanceDetailsLaunchDetailsPlatformConfigIsSymmetricMultiThreadingEnabled === "true",
 *                 isTrustedPlatformModuleEnabled: instanceConfigurationInstanceDetailsLaunchDetailsPlatformConfigIsTrustedPlatformModuleEnabled === "true",
 *                 numaNodesPerSocket: instanceConfigurationInstanceDetailsLaunchDetailsPlatformConfigNumaNodesPerSocket,
 *                 percentageOfCoresEnabled: Number(instanceConfigurationInstanceDetailsLaunchDetailsPlatformConfigPercentageOfCoresEnabled),
 *             },
 *             preemptibleInstanceConfig: {
 *                 preemptionAction: {
 *                     type: instanceConfigurationInstanceDetailsLaunchDetailsPreemptibleInstanceConfigPreemptionActionType,
 *                     preserveBootVolume: instanceConfigurationInstanceDetailsLaunchDetailsPreemptibleInstanceConfigPreemptionActionPreserveBootVolume === "true",
 *                 },
 *             },
 *             preferredMaintenanceAction: instanceConfigurationInstanceDetailsLaunchDetailsPreferredMaintenanceAction,
 *             securityAttributes: instanceConfigurationInstanceDetailsLaunchDetailsSecurityAttributes,
 *             shape: instanceConfigurationInstanceDetailsLaunchDetailsShape,
 *             shapeConfig: {
 *                 baselineOcpuUtilization: instanceConfigurationInstanceDetailsLaunchDetailsShapeConfigBaselineOcpuUtilization,
 *                 localVolumeSizeInGbs: Number(instanceConfigurationInstanceDetailsLaunchDetailsShapeConfigLocalVolumeSizeInGbs),
 *                 memoryInGbs: instanceConfigurationInstanceDetailsLaunchDetailsShapeConfigMemoryInGbs,
 *                 nvmes: Number(instanceConfigurationInstanceDetailsLaunchDetailsShapeConfigNvmes),
 *                 ocpus: instanceConfigurationInstanceDetailsLaunchDetailsShapeConfigOcpus,
 *                 resourceManagement: instanceConfigurationInstanceDetailsLaunchDetailsShapeConfigResourceManagement,
 *                 vcpus: Number(instanceConfigurationInstanceDetailsLaunchDetailsShapeConfigVcpus),
 *             },
 *             sourceDetails: {
 *                 sourceType: instanceConfigurationInstanceDetailsLaunchDetailsSourceDetailsSourceType,
 *                 bootVolumeId: testBootVolume.id,
 *                 bootVolumeSizeInGbs: instanceConfigurationInstanceDetailsLaunchDetailsSourceDetailsBootVolumeSizeInGbs,
 *                 bootVolumeVpusPerGb: instanceConfigurationInstanceDetailsLaunchDetailsSourceDetailsBootVolumeVpusPerGb,
 *                 imageId: testImage.id,
 *                 kmsKeyId: testKey.id,
 *                 instanceSourceImageFilterDetails: {
 *                     compartmentId: compartmentId,
 *                     definedTagsFilter: instanceConfigurationInstanceDetailsLaunchDetailsSourceDetailsInstanceSourceImageFilterDetailsDefinedTagsFilter,
 *                     operatingSystem: instanceConfigurationInstanceDetailsLaunchDetailsSourceDetailsInstanceSourceImageFilterDetailsOperatingSystem,
 *                     operatingSystemVersion: instanceConfigurationInstanceDetailsLaunchDetailsSourceDetailsInstanceSourceImageFilterDetailsOperatingSystemVersion,
 *                 },
 *             },
 *         },
 *         options: [{
 *             blockVolumes: [{
 *                 attachDetails: {
 *                     type: instanceConfigurationInstanceDetailsOptionsBlockVolumesAttachDetailsType,
 *                     device: instanceConfigurationInstanceDetailsOptionsBlockVolumesAttachDetailsDevice,
 *                     displayName: instanceConfigurationInstanceDetailsOptionsBlockVolumesAttachDetailsDisplayName,
 *                     isPvEncryptionInTransitEnabled: instanceConfigurationInstanceDetailsOptionsBlockVolumesAttachDetailsIsPvEncryptionInTransitEnabled === "true",
 *                     isReadOnly: instanceConfigurationInstanceDetailsOptionsBlockVolumesAttachDetailsIsReadOnly === "true",
 *                     isShareable: instanceConfigurationInstanceDetailsOptionsBlockVolumesAttachDetailsIsShareable === "true",
 *                     useChap: instanceConfigurationInstanceDetailsOptionsBlockVolumesAttachDetailsUseChap === "true",
 *                 },
 *                 createDetails: {
 *                     autotunePolicies: [{
 *                         autotuneType: instanceConfigurationInstanceDetailsOptionsBlockVolumesCreateDetailsAutotunePoliciesAutotuneType,
 *                         maxVpusPerGb: instanceConfigurationInstanceDetailsOptionsBlockVolumesCreateDetailsAutotunePoliciesMaxVpusPerGb,
 *                     }],
 *                     availabilityDomain: instanceConfigurationInstanceDetailsOptionsBlockVolumesCreateDetailsAvailabilityDomain,
 *                     backupPolicyId: testVolumeBackupPolicies.volumeBackupPolicies[0].id,
 *                     clusterPlacementGroupId: clusterPlacementGroupId,
 *                     compartmentId: compartmentId,
 *                     definedTags: {
 *                         "Operations.CostCenter": "42",
 *                     },
 *                     displayName: instanceConfigurationInstanceDetailsOptionsBlockVolumesCreateDetailsDisplayName,
 *                     freeformTags: {
 *                         Department: "Finance",
 *                     },
 *                     isAutoTuneEnabled: instanceConfigurationInstanceDetailsOptionsBlockVolumesCreateDetailsIsAutoTuneEnabled === "true",
 *                     isReservationsEnabled: instanceConfigurationInstanceDetailsOptionsBlockVolumesCreateDetailsIsReservationsEnabled,
 *                     kmsKeyId: testKey.id,
 *                     sizeInGbs: instanceConfigurationInstanceDetailsOptionsBlockVolumesCreateDetailsSizeInGbs,
 *                     sourceDetails: {
 *                         type: instanceConfigurationInstanceDetailsOptionsBlockVolumesCreateDetailsSourceDetailsType,
 *                         id: instanceConfigurationInstanceDetailsOptionsBlockVolumesCreateDetailsSourceDetailsId,
 *                     },
 *                     vpusPerGb: instanceConfigurationInstanceDetailsOptionsBlockVolumesCreateDetailsVpusPerGb,
 *                     xrcKmsKeyId: testKey.id,
 *                 },
 *                 volumeId: testVolume.id,
 *             }],
 *             launchDetails: {
 *                 agentConfig: {
 *                     areAllPluginsDisabled: instanceConfigurationInstanceDetailsOptionsLaunchDetailsAgentConfigAreAllPluginsDisabled === "true",
 *                     isManagementDisabled: instanceConfigurationInstanceDetailsOptionsLaunchDetailsAgentConfigIsManagementDisabled === "true",
 *                     isMonitoringDisabled: instanceConfigurationInstanceDetailsOptionsLaunchDetailsAgentConfigIsMonitoringDisabled === "true",
 *                     pluginsConfigs: [{
 *                         desiredState: instanceConfigurationInstanceDetailsOptionsLaunchDetailsAgentConfigPluginsConfigDesiredState,
 *                         name: instanceConfigurationInstanceDetailsOptionsLaunchDetailsAgentConfigPluginsConfigName,
 *                     }],
 *                 },
 *                 availabilityConfig: {
 *                     recoveryAction: instanceConfigurationInstanceDetailsOptionsLaunchDetailsAvailabilityConfigRecoveryAction,
 *                 },
 *                 availabilityDomain: instanceConfigurationInstanceDetailsOptionsLaunchDetailsAvailabilityDomain,
 *                 capacityReservationId: testCapacityReservation.id,
 *                 clusterPlacementGroupId: testGroup.id,
 *                 compartmentId: compartmentId,
 *                 computeClusterId: testComputeCluster.id,
 *                 createVnicDetails: {
 *                     assignIpv6ip: instanceConfigurationInstanceDetailsLaunchDetailsCreateVnicDetailsAssignIpv6ip === "true",
 *                     assignPrivateDnsRecord: instanceConfigurationInstanceDetailsOptionsLaunchDetailsCreateVnicDetailsAssignPrivateDnsRecord === "true",
 *                     assignPublicIp: instanceConfigurationInstanceDetailsOptionsLaunchDetailsCreateVnicDetailsAssignPublicIp === "true",
 *                     definedTags: {
 *                         "Operations.CostCenter": "42",
 *                     },
 *                     displayName: instanceConfigurationInstanceDetailsOptionsLaunchDetailsCreateVnicDetailsDisplayName,
 *                     freeformTags: {
 *                         Department: "Finance",
 *                     },
 *                     hostnameLabel: instanceConfigurationInstanceDetailsOptionsLaunchDetailsCreateVnicDetailsHostnameLabel,
 *                     ipv6addressIpv6subnetCidrPairDetails: [{
 *                         ipv6address: instanceConfigurationInstanceDetailsOptionsLaunchDetailsCreateVnicDetailsIpv6addressIpv6subnetCidrPairDetailsIpv6address,
 *                         ipv6id: testIpv6.id,
 *                         ipv6subnetCidr: instanceConfigurationInstanceDetailsOptionsLaunchDetailsCreateVnicDetailsIpv6addressIpv6subnetCidrPairDetailsIpv6subnetCidr,
 *                     }],
 *                     nsgIds: instanceConfigurationInstanceDetailsOptionsLaunchDetailsCreateVnicDetailsNsgIds,
 *                     privateIp: instanceConfigurationInstanceDetailsOptionsLaunchDetailsCreateVnicDetailsPrivateIp,
 *                     privateIpId: testPrivateIp.id,
 *                     securityAttributes: instanceConfigurationInstanceDetailsOptionsLaunchDetailsCreateVnicDetailsSecurityAttributes,
 *                     skipSourceDestCheck: instanceConfigurationInstanceDetailsOptionsLaunchDetailsCreateVnicDetailsSkipSourceDestCheck === "true",
 *                     subnetCidr: instanceConfigurationInstanceDetailsOptionsLaunchDetailsCreateVnicDetailsSubnetCidr,
 *                     subnetId: testSubnet.id,
 *                 },
 *                 dedicatedVmHostId: testDedicatedVmHost.id,
 *                 definedTags: {
 *                     "Operations.CostCenter": "42",
 *                 },
 *                 displayName: instanceConfigurationInstanceDetailsOptionsLaunchDetailsDisplayName,
 *                 extendedMetadata: instanceConfigurationInstanceDetailsOptionsLaunchDetailsExtendedMetadata,
 *                 faultDomain: instanceConfigurationInstanceDetailsOptionsLaunchDetailsFaultDomain,
 *                 freeformTags: {
 *                     Department: "Finance",
 *                 },
 *                 instanceOptions: {
 *                     areLegacyImdsEndpointsDisabled: instanceConfigurationInstanceDetailsOptionsLaunchDetailsInstanceOptionsAreLegacyImdsEndpointsDisabled === "true",
 *                 },
 *                 ipxeScript: instanceConfigurationInstanceDetailsOptionsLaunchDetailsIpxeScript,
 *                 isAiEnterpriseEnabled: instanceConfigurationInstanceDetailsOptionsLaunchDetailsIsAiEnterpriseEnabled === "true",
 *                 isPvEncryptionInTransitEnabled: instanceConfigurationInstanceDetailsOptionsLaunchDetailsIsPvEncryptionInTransitEnabled === "true",
 *                 launchMode: instanceConfigurationInstanceDetailsOptionsLaunchDetailsLaunchMode,
 *                 launchOptions: {
 *                     bootVolumeType: instanceConfigurationInstanceDetailsOptionsLaunchDetailsLaunchOptionsBootVolumeType,
 *                     firmware: instanceConfigurationInstanceDetailsOptionsLaunchDetailsLaunchOptionsFirmware,
 *                     isConsistentVolumeNamingEnabled: instanceConfigurationInstanceDetailsOptionsLaunchDetailsLaunchOptionsIsConsistentVolumeNamingEnabled === "true",
 *                     isPvEncryptionInTransitEnabled: instanceConfigurationInstanceDetailsOptionsLaunchDetailsLaunchOptionsIsPvEncryptionInTransitEnabled === "true",
 *                     networkType: instanceConfigurationInstanceDetailsOptionsLaunchDetailsLaunchOptionsNetworkType,
 *                     remoteDataVolumeType: instanceConfigurationInstanceDetailsOptionsLaunchDetailsLaunchOptionsRemoteDataVolumeType,
 *                 },
 *                 licensingConfigs: {
 *                     type: instanceConfigurationInstanceDetailsOptionsLaunchDetailsLicensingConfigsType,
 *                     licenseType: instanceConfigurationInstanceDetailsOptionsLaunchDetailsLicensingConfigsLicenseType,
 *                 },
 *                 metadata: instanceConfigurationInstanceDetailsOptionsLaunchDetailsMetadata,
 *                 placementConstraintDetails: {
 *                     computeHostGroupId: testComputeHostGroup.id,
 *                     type: instanceConfigurationInstanceDetailsOptionsLaunchDetailsPlacementConstraintDetailsType,
 *                 },
 *                 platformConfig: {
 *                     type: instanceConfigurationInstanceDetailsOptionsLaunchDetailsPlatformConfigType,
 *                     areVirtualInstructionsEnabled: instanceConfigurationInstanceDetailsOptionsLaunchDetailsPlatformConfigAreVirtualInstructionsEnabled === "true",
 *                     isAccessControlServiceEnabled: instanceConfigurationInstanceDetailsOptionsLaunchDetailsPlatformConfigIsAccessControlServiceEnabled === "true",
 *                     isInputOutputMemoryManagementUnitEnabled: instanceConfigurationInstanceDetailsOptionsLaunchDetailsPlatformConfigIsInputOutputMemoryManagementUnitEnabled === "true",
 *                     isMeasuredBootEnabled: instanceConfigurationInstanceDetailsOptionsLaunchDetailsPlatformConfigIsMeasuredBootEnabled === "true",
 *                     isMemoryEncryptionEnabled: instanceConfigurationInstanceDetailsOptionsLaunchDetailsPlatformConfigIsMemoryEncryptionEnabled === "true",
 *                     isSecureBootEnabled: instanceConfigurationInstanceDetailsOptionsLaunchDetailsPlatformConfigIsSecureBootEnabled === "true",
 *                     isSymmetricMultiThreadingEnabled: instanceConfigurationInstanceDetailsOptionsLaunchDetailsPlatformConfigIsSymmetricMultiThreadingEnabled === "true",
 *                     isTrustedPlatformModuleEnabled: instanceConfigurationInstanceDetailsOptionsLaunchDetailsPlatformConfigIsTrustedPlatformModuleEnabled === "true",
 *                     numaNodesPerSocket: instanceConfigurationInstanceDetailsOptionsLaunchDetailsPlatformConfigNumaNodesPerSocket,
 *                     percentageOfCoresEnabled: Number(instanceConfigurationInstanceDetailsOptionsLaunchDetailsPlatformConfigPercentageOfCoresEnabled),
 *                 },
 *                 preemptibleInstanceConfig: {
 *                     preemptionAction: {
 *                         type: instanceConfigurationInstanceDetailsOptionsLaunchDetailsPreemptibleInstanceConfigPreemptionActionType,
 *                         preserveBootVolume: instanceConfigurationInstanceDetailsOptionsLaunchDetailsPreemptibleInstanceConfigPreemptionActionPreserveBootVolume === "true",
 *                     },
 *                 },
 *                 preferredMaintenanceAction: instanceConfigurationInstanceDetailsOptionsLaunchDetailsPreferredMaintenanceAction,
 *                 securityAttributes: instanceConfigurationInstanceDetailsOptionsLaunchDetailsSecurityAttributes,
 *                 shape: instanceConfigurationInstanceDetailsOptionsLaunchDetailsShape,
 *                 shapeConfig: {
 *                     baselineOcpuUtilization: instanceConfigurationInstanceDetailsOptionsLaunchDetailsShapeConfigBaselineOcpuUtilization,
 *                     localVolumeSizeInGbs: Number(instanceConfigurationInstanceDetailsOptionsLaunchDetailsShapeConfigLocalVolumeSizeInGbs),
 *                     memoryInGbs: instanceConfigurationInstanceDetailsOptionsLaunchDetailsShapeConfigMemoryInGbs,
 *                     nvmes: Number(instanceConfigurationInstanceDetailsOptionsLaunchDetailsShapeConfigNvmes),
 *                     ocpus: instanceConfigurationInstanceDetailsOptionsLaunchDetailsShapeConfigOcpus,
 *                     resourceManagement: instanceConfigurationInstanceDetailsOptionsLaunchDetailsShapeConfigResourceManagement,
 *                     vcpus: Number(instanceConfigurationInstanceDetailsOptionsLaunchDetailsShapeConfigVcpus),
 *                 },
 *                 sourceDetails: {
 *                     sourceType: instanceConfigurationInstanceDetailsOptionsLaunchDetailsSourceDetailsSourceType,
 *                     bootVolumeId: testBootVolume.id,
 *                     bootVolumeSizeInGbs: instanceConfigurationInstanceDetailsOptionsLaunchDetailsSourceDetailsBootVolumeSizeInGbs,
 *                     bootVolumeVpusPerGb: instanceConfigurationInstanceDetailsOptionsLaunchDetailsSourceDetailsBootVolumeVpusPerGb,
 *                     imageId: testImage.id,
 *                     instanceSourceImageFilterDetails: {
 *                         compartmentId: compartmentId,
 *                         definedTagsFilter: instanceConfigurationInstanceDetailsOptionsLaunchDetailsSourceDetailsInstanceSourceImageFilterDetailsDefinedTagsFilter,
 *                         operatingSystem: instanceConfigurationInstanceDetailsOptionsLaunchDetailsSourceDetailsInstanceSourceImageFilterDetailsOperatingSystem,
 *                         operatingSystemVersion: instanceConfigurationInstanceDetailsOptionsLaunchDetailsSourceDetailsInstanceSourceImageFilterDetailsOperatingSystemVersion,
 *                     },
 *                 },
 *             },
 *             secondaryVnics: [{
 *                 createVnicDetails: {
 *                     assignIpv6ip: instanceConfigurationInstanceDetailsSecondaryVnicsCreateVnicDetailsAssignIpv6ip === "true",
 *                     assignPrivateDnsRecord: instanceConfigurationInstanceDetailsOptionsSecondaryVnicsCreateVnicDetailsAssignPrivateDnsRecord === "true",
 *                     assignPublicIp: instanceConfigurationInstanceDetailsOptionsSecondaryVnicsCreateVnicDetailsAssignPublicIp === "true",
 *                     definedTags: {
 *                         "Operations.CostCenter": "42",
 *                     },
 *                     displayName: instanceConfigurationInstanceDetailsOptionsSecondaryVnicsCreateVnicDetailsDisplayName,
 *                     freeformTags: {
 *                         Department: "Finance",
 *                     },
 *                     hostnameLabel: instanceConfigurationInstanceDetailsOptionsSecondaryVnicsCreateVnicDetailsHostnameLabel,
 *                     ipv6addressIpv6subnetCidrPairDetails: [{
 *                         ipv6address: instanceConfigurationInstanceDetailsOptionsSecondaryVnicsCreateVnicDetailsIpv6addressIpv6subnetCidrPairDetailsIpv6address,
 *                         ipv6id: testIpv6.id,
 *                         ipv6subnetCidr: instanceConfigurationInstanceDetailsOptionsSecondaryVnicsCreateVnicDetailsIpv6addressIpv6subnetCidrPairDetailsIpv6subnetCidr,
 *                     }],
 *                     nsgIds: instanceConfigurationInstanceDetailsOptionsSecondaryVnicsCreateVnicDetailsNsgIds,
 *                     privateIp: instanceConfigurationInstanceDetailsOptionsSecondaryVnicsCreateVnicDetailsPrivateIp,
 *                     privateIpId: testPrivateIp.id,
 *                     securityAttributes: instanceConfigurationInstanceDetailsOptionsSecondaryVnicsCreateVnicDetailsSecurityAttributes,
 *                     skipSourceDestCheck: instanceConfigurationInstanceDetailsOptionsSecondaryVnicsCreateVnicDetailsSkipSourceDestCheck === "true",
 *                     subnetCidr: instanceConfigurationInstanceDetailsOptionsSecondaryVnicsCreateVnicDetailsSubnetCidr,
 *                     subnetId: testSubnet.id,
 *                 },
 *                 displayName: instanceConfigurationInstanceDetailsOptionsSecondaryVnicsDisplayName,
 *                 nicIndex: Number(instanceConfigurationInstanceDetailsOptionsSecondaryVnicsNicIndex),
 *             }],
 *         }],
 *         secondaryVnics: [{
 *             createVnicDetails: {
 *                 assignPrivateDnsRecord: instanceConfigurationInstanceDetailsSecondaryVnicsCreateVnicDetailsAssignPrivateDnsRecord === "true",
 *                 assignPublicIp: instanceConfigurationInstanceDetailsSecondaryVnicsCreateVnicDetailsAssignPublicIp === "true",
 *                 definedTags: {
 *                     "Operations.CostCenter": "42",
 *                 },
 *                 displayName: instanceConfigurationInstanceDetailsSecondaryVnicsCreateVnicDetailsDisplayName,
 *                 freeformTags: {
 *                     Department: "Finance",
 *                 },
 *                 hostnameLabel: instanceConfigurationInstanceDetailsSecondaryVnicsCreateVnicDetailsHostnameLabel,
 *                 ipv6addressIpv6subnetCidrPairDetails: [{
 *                     ipv6address: instanceConfigurationInstanceDetailsSecondaryVnicsCreateVnicDetailsIpv6addressIpv6subnetCidrPairDetailsIpv6address,
 *                     ipv6id: testIpv6.id,
 *                     ipv6subnetCidr: instanceConfigurationInstanceDetailsSecondaryVnicsCreateVnicDetailsIpv6addressIpv6subnetCidrPairDetailsIpv6subnetCidr,
 *                 }],
 *                 nsgIds: instanceConfigurationInstanceDetailsSecondaryVnicsCreateVnicDetailsNsgIds,
 *                 privateIp: instanceConfigurationInstanceDetailsSecondaryVnicsCreateVnicDetailsPrivateIp,
 *                 privateIpId: testPrivateIp.id,
 *                 securityAttributes: instanceConfigurationInstanceDetailsSecondaryVnicsCreateVnicDetailsSecurityAttributes,
 *                 skipSourceDestCheck: instanceConfigurationInstanceDetailsSecondaryVnicsCreateVnicDetailsSkipSourceDestCheck === "true",
 *                 subnetCidr: instanceConfigurationInstanceDetailsSecondaryVnicsCreateVnicDetailsSubnetCidr,
 *                 subnetId: testSubnet.id,
 *             },
 *             displayName: instanceConfigurationInstanceDetailsSecondaryVnicsDisplayName,
 *             nicIndex: Number(instanceConfigurationInstanceDetailsSecondaryVnicsNicIndex),
 *         }],
 *     },
 *     instanceId: testInstance.id,
 *     source: instanceConfigurationSource,
 * });
 * ```
 *
 * ## Import
 *
 * InstanceConfigurations can be imported using the `id`, e.g.
 *
 * ```sh
 * $ pulumi import oci:Core/instanceConfiguration:InstanceConfiguration test_instance_configuration "id"
 * ```
 */
class InstanceConfiguration extends pulumi.CustomResource {
    /**
     * Get an existing InstanceConfiguration resource's state with the given name, ID, and optional extra
     * properties used to qualify the lookup.
     *
     * @param name The _unique_ name of the resulting resource.
     * @param id The _unique_ provider ID of the resource to lookup.
     * @param state Any extra arguments used during the lookup.
     * @param opts Optional settings to control the behavior of the CustomResource.
     */
    static get(name, id, state, opts) {
        return new InstanceConfiguration(name, state, { ...opts, id: id });
    }
    /** @internal */
    static __pulumiType = 'oci:Core/instanceConfiguration:InstanceConfiguration';
    /**
     * Returns true if the given object is an instance of InstanceConfiguration.  This is designed to work even
     * when multiple copies of the Pulumi SDK have been loaded into the same process.
     */
    static isInstance(obj) {
        if (obj === undefined || obj === null) {
            return false;
        }
        return obj['__pulumiType'] === InstanceConfiguration.__pulumiType;
    }
    constructor(name, argsOrState, opts) {
        let resourceInputs = {};
        opts = opts || {};
        if (opts.id) {
            const state = argsOrState;
            resourceInputs["compartmentId"] = state?.compartmentId;
            resourceInputs["deferredFields"] = state?.deferredFields;
            resourceInputs["definedTags"] = state?.definedTags;
            resourceInputs["displayName"] = state?.displayName;
            resourceInputs["freeformTags"] = state?.freeformTags;
            resourceInputs["instanceDetails"] = state?.instanceDetails;
            resourceInputs["instanceId"] = state?.instanceId;
            resourceInputs["source"] = state?.source;
            resourceInputs["timeCreated"] = state?.timeCreated;
        }
        else {
            const args = argsOrState;
            if (args?.compartmentId === undefined && !opts.urn) {
                throw new Error("Missing required property 'compartmentId'");
            }
            resourceInputs["compartmentId"] = args?.compartmentId;
            resourceInputs["definedTags"] = args?.definedTags;
            resourceInputs["displayName"] = args?.displayName;
            resourceInputs["freeformTags"] = args?.freeformTags;
            resourceInputs["instanceDetails"] = args?.instanceDetails;
            resourceInputs["instanceId"] = args?.instanceId;
            resourceInputs["source"] = args?.source;
            resourceInputs["deferredFields"] = undefined /*out*/;
            resourceInputs["timeCreated"] = undefined /*out*/;
        }
        opts = pulumi.mergeOptions(utilities.resourceOptsDefaults(), opts);
        super(InstanceConfiguration.__pulumiType, name, resourceInputs, opts);
    }
}
exports.InstanceConfiguration = InstanceConfiguration;
//# sourceMappingURL=instanceConfiguration.js.map