NICo Driver (AE)
Overview
The NICo VMM and IM drivers enable OpenNebula to deploy and monitor NVIDIA NICo instances through the NICo REST API. A NICo Host in OpenNebula does not represent a KVM or LXC hypervisor node. Instead, it represents a NICo allocation and the API connection settings used to create, inspect, and delete NICo instances.
The NICo VMM driver stores the NICo instance UUID as the VM DEPLOY_ID. Later operations, such as shutdown and monitoring, use this value when making calls to the NICo REST API.
OpenNebula maintains a NICo VM in the RUNNING state during a NICo reboot request. The monitor data includes NICO_STATUS, so that transient NICo states such as Rebooting can be inspected without changing the OpenNebula lifecycle state.
Creating a NICo Host
Create a dedicated Host using the NICo IM and VMM drivers:
onehost create nico --im nico --vm nico
After creating the Host, add the NICo connection and allocation attributes:
onehost update nico
Example Host template:
NICO_CARBIDE_PROXY = "https://ncp-isv-carbide-proxy.nvidia.com/v1/carbide/proxy"
NICO_SSA_ISSUER = "https://issuer.example/token-provider"
NICO_NGC_ORG = "example-org"
NICO_ISV_CLIENT_ID = "client-id"
NICO_ISV_CLIENT_SECRET = "client-secret"
NICO_TARGET_SCOPES = "scope1 scope2"
NICO_ALLOCATION = "allocation-id"
NICO_API_TIMEOUT = "60"
NICO_FORCE_DESTROY = "NO"
Required Host attributes:
NICO_CARBIDE_PROXY: Base URL for the CARBIDE proxy.NICO_SSA_ISSUER: Issuer URL used to obtain the JWT token.NICO_NGC_ORG: NGC organization used in NICo API paths.NICO_ISV_CLIENT_ID: Client ID for theclient_credentialsflow.NICO_ISV_CLIENT_SECRET: Client secret for theclient_credentialsflow.NICO_TARGET_SCOPES: Scopes requested when acquiring the JWT token.NICO_ALLOCATION: NICo allocation ID represented by this OpenNebula Host.
Optional Host attributes:
NICO_API_TIMEOUT: API timeout in seconds. The default is60.NICO_FORCE_DESTROY: Set toYESto request forced deletion on cancel operations. The default isNO.
The IM driver uses NICO_ALLOCATION to query GET /allocation/<id> and report Host capacity from allocationConstraints[0].constraintValue.
Creating a NICo VM Template
Create a VM template with the NICo instance attributes required by the allocation and operating system you intend to deploy.
Example VM template:
NAME = "nico-instance"
CPU = "1"
MEMORY = "1"
NICO_INSTANCE_TYPE_ID = "instance-type-id"
NICO_OS_ID = "operating-system-id"
NICO_VPC_ID = "vpc-id"
NICO_NETWORK_SECURITY_GROUP_ID = "security-group-id"
NICO_SSH_KEY_GROUP_IDS = "ssh-key-group-1,ssh-key-group-2"
NICO_USER_DATA = "cloud-init-or-user-data"
NICO_LABELS = "{\"environment\":\"test\"}"
NIC = [
NETWORK = "nico-network",
NICO_VPC_PREFIX_ID = "vpc-prefix-id"
]
SCHED_REQUIREMENTS = "ID = 123"
Required VM attributes:
CPU: Must be1, as it represents a single instance to the OpenNebula scheduler.MEMORY: Must be1, same as with CPU.NICO_INSTANCE_TYPE_ID: NICo instance type to deploy.NICO_OS_ID: Operating system ID.NICO_VPC_ID: VPC used by the instance. This attribute must be defined in the VM template.NIC: Network interface used by the instance.NIC/NICO_VPC_PREFIX_ID: VPC prefix used by the instance interface. This attribute must be defined in the NIC section.SCHED_REQUIREMENTS: Scheduling expression used to place the VM on the NICo Host.
NICO_VPC_ID is read only from the VM template. NICO_VPC_PREFIX_ID is read only from the first NIC section.
Common optional VM attributes:
NICO_NETWORK_SECURITY_GROUP_ID: Network security group ID.NICO_SSH_KEY_GROUP_IDS: Comma-separated list of SSH key group IDs.NICO_USER_DATA: User data passed to the NICo instance.NICO_LABELS: JSON object with labels to attach to the NICo instance.
Scheduling to the NICo Host
NICo instances must be scheduled to the OpenNebula Host configured with the NICo drivers and the corresponding NICo allocation attributes. Use SCHED_REQUIREMENTS in the VM template to force placement on that Host.
Pin by Host ID:
SCHED_REQUIREMENTS = "ID = 123"
Alternatively, place the VM on any Host using the NICo VMM driver:
SCHED_REQUIREMENTS = "VM_MAD = \"nico\""
Using explicit scheduling prevents the NICo template from being placed on regular KVM or LXC Hosts.
GIVE FEEDBACK
Was this resource helpful?
Glad to hear it
Sorry to hear that