// 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 containerinstances from "oci-containerinstances";
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 containerinstances.ContainerInstanceClient({ authenticationDetailsProvider: provider });

     // Create a request and dependent object(s).
	const  createContainerInstanceDetails = {
		displayName: "EXAMPLE-displayName-Value",
		compartmentId: "ocid1.test.oc1..<unique_ID>EXAMPLE-compartmentId-Value",
		availabilityDomain: "EXAMPLE-availabilityDomain-Value",
		faultDomain: "EXAMPLE-faultDomain-Value",
		shape: "EXAMPLE-shape-Value",
		shapeConfig: {
			ocpus: 4464.8594,
			memoryInGBs: 3060.7778,

			}
,
		volumes: [{
				volumeType: "EMPTYDIR",				backingStore: containerinstances.models.ContainerEmptyDirVolume.BackingStore.Memory,
				name: "EXAMPLE-name-Value"

				}
				],
		containers: [{
				displayName: "EXAMPLE-displayName-Value",
				imageUrl: "EXAMPLE-imageUrl-Value",
				command: ["EXAMPLE--Value"						],
				arguments: ["EXAMPLE--Value"						],
				workingDirectory: "EXAMPLE-workingDirectory-Value",
				environmentVariables: {
					EXAMPLE_KEY_cYi21 :"EXAMPLE_VALUE_3wu4d90Tp6DPXSUSEtOG"
					},
				volumeMounts: [{
						mountPath: "EXAMPLE-mountPath-Value",
						volumeName: "EXAMPLE-volumeName-Value",
						subPath: "EXAMPLE-subPath-Value",
						isReadOnly: false,
						partition: 59,

						}
						],
				isResourcePrincipalDisabled: true,
				resourceConfig: {
					vcpusLimit: 3858.2258,
					memoryLimitInGBs: 384.64545,

					}
,
				healthChecks: [{
						healthCheckType: "TCP",						port: 14142,
						name: "EXAMPLE-name-Value",
						initialDelayInSeconds: 734,
						intervalInSeconds: 737,
						failureThreshold: 241,
						successThreshold: 19,
						timeoutInSeconds: 928,
						failureAction: containerinstances.models.ContainerHealthCheckFailureAction.Kill

						}
						],
				securityContext: {
					securityContextType: "LINUX",					runAsUser: 824,
					runAsGroup: 31533,
					isNonRootUserCheckEnabled: false,
					isRootFileSystemReadonly: true,
					capabilities: {
						addCapabilities: [containerinstances.models.ContainerCapabilityType.CapSetuid								],
						dropCapabilities: [containerinstances.models.ContainerCapabilityType.CapAuditWrite								],

						}


					}
,
				freeformTags: {
					EXAMPLE_KEY_IdMg1 :"EXAMPLE_VALUE_Zl5dlLM8N08warUK7AlI"
					},
				definedTags: {
					EXAMPLE_KEY_7dMJD :{
						EXAMPLE_KEY_2mGCs :"EXAMPLE--Value"
						}
					},

				}
				],
		vnics: [{
				displayName: "EXAMPLE-displayName-Value",
				hostnameLabel: "EXAMPLE-hostnameLabel-Value",
				isPublicIpAssigned: false,
				skipSourceDestCheck: true,
				nsgIds: ["EXAMPLE--Value"						],
				privateIp: "EXAMPLE-privateIp-Value",
				subnetId: "ocid1.test.oc1..<unique_ID>EXAMPLE-subnetId-Value",
				freeformTags: {
					EXAMPLE_KEY_DxJBV :"EXAMPLE_VALUE_gb97k5iIPcPYVo584j7K"
					},
				definedTags: {
					EXAMPLE_KEY_Vj3sA :{
						EXAMPLE_KEY_1EH1j :"EXAMPLE--Value"
						}
					},

				}
				],
		dnsConfig: {
			nameservers: ["EXAMPLE--Value"					],
			searches: ["EXAMPLE--Value"					],
			options: ["EXAMPLE--Value"					],

			}
,
		gracefulShutdownTimeoutInSeconds: 116,
		imagePullSecrets: [{
				secretType: "VAULT",				secretId: "ocid1.test.oc1..<unique_ID>EXAMPLE-secretId-Value",
				registryEndpoint: "EXAMPLE-registryEndpoint-Value"

				}
				],
		containerRestartPolicy: containerinstances.models.ContainerInstance.ContainerRestartPolicy.Never,
		freeformTags: {
			EXAMPLE_KEY_7Qwb0 :"EXAMPLE_VALUE_sOh9BRxOzLs271Uznrui"
			},
		definedTags: {
			EXAMPLE_KEY_qZyzw :{
				EXAMPLE_KEY_4XzLy :"EXAMPLE--Value"
				}
			},

		}

	const createContainerInstanceRequest: containerinstances.requests.CreateContainerInstanceRequest = { 
	createContainerInstanceDetails: createContainerInstanceDetails,
	opcRetryToken: "EXAMPLE-opcRetryToken-Value",
	opcRequestId: "DGWCZWDK5WBMLOUDMZT2<unique_ID>",

		}; 


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