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

using System;
using System.Collections.Generic;
using System.Threading.Tasks;
using Oci.CloudbridgeService;
using Oci.Common;
using Oci.Common.Auth;

namespace Oci.Sdk.DotNet.Example.Cloudbridge
{
    public class CreateAssetExample
    {
        public static async Task Main()
        {
            // Create a request and dependent object(s).
			var createAssetDetails = new Oci.CloudbridgeService.Models.CreateAwsEc2AssetDetails
			{
				Compute = new Oci.CloudbridgeService.Models.ComputeProperties
				{
					PrimaryIp = "EXAMPLE-primaryIp-Value",
					DnsName = "EXAMPLE-dnsName-Value",
					Description = "EXAMPLE-description-Value",
					CoresCount = 309,
					CpuModel = "EXAMPLE-cpuModel-Value",
					GpuDevicesCount = 655,
					GpuDevices = new List<Oci.CloudbridgeService.Models.GpuDevice>
					{
						new Oci.CloudbridgeService.Models.GpuDevice
						{
							Name = "EXAMPLE-name-Value",
							Description = "EXAMPLE-description-Value",
							CoresCount = 771,
							MemoryInMBs = 532,
							Manufacturer = "EXAMPLE-manufacturer-Value"
						}
					},
					ThreadsPerCoreCount = 915,
					MemoryInMBs = 412,
					IsPmemEnabled = false,
					PmemInMBs = 513,
					OperatingSystem = "EXAMPLE-operatingSystem-Value",
					OperatingSystemVersion = "EXAMPLE-operatingSystemVersion-Value",
					HostName = "EXAMPLE-hostName-Value",
					PowerState = "EXAMPLE-powerState-Value",
					GuestState = "EXAMPLE-guestState-Value",
					IsTpmEnabled = true,
					ConnectedNetworks = 395,
					NicsCount = 407,
					Nics = new List<Oci.CloudbridgeService.Models.Nic>
					{
						new Oci.CloudbridgeService.Models.Nic
						{
							Label = "EXAMPLE-label-Value",
							SwitchName = "EXAMPLE-switchName-Value",
							MacAddress = "EXAMPLE-macAddress-Value",
							MacAddressType = "EXAMPLE-macAddressType-Value",
							NetworkName = "EXAMPLE-networkName-Value",
							IpAddresses = new List<string>
							{
								"EXAMPLE--Value"
							}
						}
					},
					StorageProvisionedInMBs = 977,
					DisksCount = 895,
					Disks = new List<Oci.CloudbridgeService.Models.Disk>
					{
						new Oci.CloudbridgeService.Models.Disk
						{
							Name = "EXAMPLE-name-Value",
							BootOrder = 863,
							Uuid = "EXAMPLE-uuid-Value",
							UuidLun = "EXAMPLE-uuidLun-Value",
							SizeInMBs = 859,
							Location = "EXAMPLE-location-Value",
							PersistentMode = "EXAMPLE-persistentMode-Value",
							IsCbtEnabled = false
						}
					},
					Firmware = "EXAMPLE-firmware-Value",
					LatencySensitivity = "EXAMPLE-latencySensitivity-Value",
					Nvdimms = new List<Oci.CloudbridgeService.Models.Nvdimm>
					{
						new Oci.CloudbridgeService.Models.Nvdimm
						{
							Label = "EXAMPLE-label-Value",
							UnitNumber = 11,
							ControllerKey = 697
						}
					},
					NvdimmController = new Oci.CloudbridgeService.Models.NvdimmController
					{
						Label = "EXAMPLE-label-Value",
						BusNumber = 789
					},
					ScsiController = new Oci.CloudbridgeService.Models.ScsiController
					{
						Label = "EXAMPLE-label-Value",
						UnitNumber = 549,
						SharedBus = "EXAMPLE-sharedBus-Value"
					},
					HardwareVersion = "EXAMPLE-hardwareVersion-Value"
				},
				Vm = new Oci.CloudbridgeService.Models.VmProperties
				{
					HypervisorVendor = "EXAMPLE-hypervisorVendor-Value",
					HypervisorVersion = "EXAMPLE-hypervisorVersion-Value",
					HypervisorHost = "EXAMPLE-hypervisorHost-Value"
				},
				AwsEc2 = new Oci.CloudbridgeService.Models.AwsEc2Properties
				{
					Architecture = "EXAMPLE-architecture-Value",
					BootMode = "EXAMPLE-bootMode-Value",
					CapacityReservationKey = "EXAMPLE-capacityReservationKey-Value",
					AreElasticInferenceAcceleratorsPresent = false,
					IsEnclaveOptions = true,
					IsHibernationOptions = true,
					ImageKey = "EXAMPLE-imageKey-Value",
					InstanceKey = "EXAMPLE-instanceKey-Value",
					InstanceLifecycle = "EXAMPLE-instanceLifecycle-Value",
					InstanceType = "EXAMPLE-instanceType-Value",
					IpAddress = "EXAMPLE-ipAddress-Value",
					Ipv6Address = "EXAMPLE-ipv6Address-Value",
					KernelKey = "EXAMPLE-kernelKey-Value",
					TimeLaunch = DateTime.Parse("01/22/2006 02:44:44"),
					Licenses = new List<string>
					{
						"EXAMPLE--Value"
					},
					MaintenanceOptions = "EXAMPLE-maintenanceOptions-Value",
					Monitoring = "EXAMPLE-monitoring-Value",
					NetworkInterfaces = new List<Oci.CloudbridgeService.Models.InstanceNetworkInterface>
					{
						new Oci.CloudbridgeService.Models.InstanceNetworkInterface
						{
							Association = new Oci.CloudbridgeService.Models.InstanceNetworkInterfaceAssociation
							{
								CarrierIp = "EXAMPLE-carrierIp-Value",
								CustomerOwnedIp = "EXAMPLE-customerOwnedIp-Value",
								IpOwnerKey = "EXAMPLE-ipOwnerKey-Value",
								PublicDnsName = "EXAMPLE-publicDnsName-Value",
								PublicIp = "EXAMPLE-publicIp-Value"
							},
							Attachment = new Oci.CloudbridgeService.Models.InstanceNetworkInterfaceAttachment
							{
								AttachmentKey = "EXAMPLE-attachmentKey-Value",
								TimeAttach = DateTime.Parse("02/07/2002 15:34:47"),
								IsDeleteOnTermination = true,
								DeviceIndex = 347,
								NetworkCardIndex = 198,
								Status = "EXAMPLE-status-Value"
							},
							Description = "EXAMPLE-description-Value",
							SecurityGroups = new List<Oci.CloudbridgeService.Models.GroupIdentifier>
							{
								new Oci.CloudbridgeService.Models.GroupIdentifier
								{
									GroupKey = "EXAMPLE-groupKey-Value",
									GroupName = "EXAMPLE-groupName-Value"
								}
							},
							InterfaceType = "EXAMPLE-interfaceType-Value",
							Ipv4Prefixes = new List<string>
							{
								"EXAMPLE--Value"
							},
							Ipv6Addresses = new List<string>
							{
								"EXAMPLE--Value"
							},
							Ipv6Prefixes = new List<string>
							{
								"EXAMPLE--Value"
							},
							MacAddress = "EXAMPLE-macAddress-Value",
							NetworkInterfaceKey = "EXAMPLE-networkInterfaceKey-Value",
							OwnerKey = "EXAMPLE-ownerKey-Value",
							PrivateIpAddresses = new List<Oci.CloudbridgeService.Models.InstancePrivateIpAddress>
							{
								new Oci.CloudbridgeService.Models.InstancePrivateIpAddress
								{
									Association = new Oci.CloudbridgeService.Models.InstanceNetworkInterfaceAssociation
									{
										CarrierIp = "EXAMPLE-carrierIp-Value",
										CustomerOwnedIp = "EXAMPLE-customerOwnedIp-Value",
										IpOwnerKey = "EXAMPLE-ipOwnerKey-Value",
										PublicDnsName = "EXAMPLE-publicDnsName-Value",
										PublicIp = "EXAMPLE-publicIp-Value"
									},
									IsPrimary = true,
									PrivateDnsName = "EXAMPLE-privateDnsName-Value",
									PrivateIpAddress = "EXAMPLE-privateIpAddress-Value"
								}
							},
							IsSourceDestCheck = true,
							Status = "EXAMPLE-status-Value",
							SubnetKey = "EXAMPLE-subnetKey-Value"
						}
					},
					Placement = new Oci.CloudbridgeService.Models.Placement
					{
						Affinity = "EXAMPLE-affinity-Value",
						AvailabilityZone = "EXAMPLE-availabilityZone-Value",
						GroupName = "EXAMPLE-groupName-Value",
						HostKey = "EXAMPLE-hostKey-Value",
						HostResourceGroupArn = "EXAMPLE-hostResourceGroupArn-Value",
						PartitionNumber = 68,
						SpreadDomain = "EXAMPLE-spreadDomain-Value",
						Tenancy = "EXAMPLE-tenancy-Value"
					},
					PrivateDnsName = "EXAMPLE-privateDnsName-Value",
					PrivateIpAddress = "EXAMPLE-privateIpAddress-Value",
					RootDeviceName = "EXAMPLE-rootDeviceName-Value",
					RootDeviceType = "EXAMPLE-rootDeviceType-Value",
					SecurityGroups = new List<Oci.CloudbridgeService.Models.GroupIdentifier>
					{
						new Oci.CloudbridgeService.Models.GroupIdentifier
						{
							GroupKey = "EXAMPLE-groupKey-Value",
							GroupName = "EXAMPLE-groupName-Value"
						}
					},
					IsSourceDestCheck = false,
					IsSpotInstance = true,
					SriovNetSupport = "EXAMPLE-sriovNetSupport-Value",
					State = new Oci.CloudbridgeService.Models.InstanceState
					{
						Code = 199,
						Name = "EXAMPLE-name-Value"
					},
					SubnetKey = "EXAMPLE-subnetKey-Value",
					Tags = new List<Oci.CloudbridgeService.Models.Tag>
					{
						new Oci.CloudbridgeService.Models.Tag
						{
							Key = "EXAMPLE-key-Value",
							Value = "EXAMPLE-value-Value"
						}
					},
					TpmSupport = "EXAMPLE-tpmSupport-Value",
					VirtualizationType = "EXAMPLE-virtualizationType-Value",
					VpcKey = "EXAMPLE-vpcKey-Value"
				},
				AwsEc2Cost = new Oci.CloudbridgeService.Models.MonthlyCostSummary
				{
					Amount = 5953.0156,
					CurrencyCode = "EXAMPLE-currencyCode-Value"
				},
				AttachedEbsVolumesCost = new Oci.CloudbridgeService.Models.MonthlyCostSummary
				{
					Amount = 5980.1978,
					CurrencyCode = "EXAMPLE-currencyCode-Value"
				},
				DisplayName = "EXAMPLE-displayName-Value",
				InventoryId = "ocid1.test.oc1..<unique_ID>EXAMPLE-inventoryId-Value",
				CompartmentId = "ocid1.test.oc1..<unique_ID>EXAMPLE-compartmentId-Value",
				SourceKey = "EXAMPLE-sourceKey-Value",
				ExternalAssetKey = "EXAMPLE-externalAssetKey-Value",
				AssetSourceIds = new List<string>
				{
					"EXAMPLE--Value"
				},
				FreeformTags = new Dictionary<string, string>()
				{
					{
						"EXAMPLE_KEY_hzlK6", 
						"EXAMPLE_VALUE_KLR6LIxVN8U13HeGTqqt"
					}
				},
				DefinedTags = new Dictionary<string, Dictionary<string, Object>>()
				{
					{
						"EXAMPLE_KEY_pdCUT", 
						new Dictionary<string, Object>()
						{
							{
								"EXAMPLE_KEY_G22dd", 
								"EXAMPLE--Value"
							}
						}
					}
				}
			};
			var createAssetRequest = new Oci.CloudbridgeService.Requests.CreateAssetRequest
			{
				CreateAssetDetails = createAssetDetails,
				OpcRequestId = "MYJSGVNILVHJSZXHAUND<unique_ID>",
				OpcRetryToken = "EXAMPLE-opcRetryToken-Value"
			};

            // 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. 
            var provider = new ConfigFileAuthenticationDetailsProvider("DEFAULT");
            try
            {
                // Create a service client and send the request.
				using (var client = new InventoryClient(provider, new ClientConfiguration()))
				{
					var response = await client.CreateAsset(createAssetRequest);
					// Retrieve value from the response.
					var id = response.Asset.Id;
				}
            }
            catch (Exception e)
            {
                Console.WriteLine($"CreateAsset Failed with {e.Message}");
                throw e;
            }
        }

    }
}

Was this article helpful?