<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Infrastructure Drivers on</title><link>https://docs.opennebula.io/7.2/product/integration_references/infrastructure_drivers_development/</link><description>Recent content in Infrastructure Drivers on</description><generator>Hugo</generator><language>en</language><lastBuildDate>Mon, 17 Feb 2025 00:00:00 +0000</lastBuildDate><atom:link href="https://docs.opennebula.io/7.2/product/integration_references/infrastructure_drivers_development/index.xml" rel="self" type="application/rss+xml"/><item><title>Overview</title><link>https://docs.opennebula.io/7.2/product/integration_references/infrastructure_drivers_development/overview/</link><pubDate>Mon, 17 Feb 2025 00:00:00 +0000</pubDate><guid>https://docs.opennebula.io/7.2/product/integration_references/infrastructure_drivers_development/overview/</guid><description>&lt;p&gt;&lt;a id="intro-integration"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;!--# Overview --&gt;
&lt;p&gt;The interactions between OpenNebula and the Cloud infrastructure are performed by specific drivers. Each one addresses a particular area:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Storage&lt;/strong&gt;. The OpenNebula core issue abstracts storage operations (e.g., clone or delete) that are implemented by specific programs that can be replaced or modified to interface special storage backends and file-systems.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Virtualization&lt;/strong&gt;. The interaction with the hypervisors are also implemented with custom programs to boot, stop, or migrate a Virtual Machine. This allows you to specialize each VM operation so as to perform custom operations.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Monitoring&lt;/strong&gt;. Monitoring information is also gathered by external probes. You can add additional probes to include custom monitoring metrics that can later be used to allocate Virtual Machines or for accounting purposes.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Authentication&lt;/strong&gt;. OpenNebula can be also configured to use an external program to authorize and authenticate user requests. In this way, you can implement any access policy to Cloud resources.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Networking&lt;/strong&gt;. The hypervisor is also prepared with the network configuration for each Virtual Machine.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Use the driver interfaces if you need OpenNebula to interface any specific storage, virtualization, monitoring, or authorization system already deployed in your data center, or to tune the behavior of the standard OpenNebula drivers.&lt;/p&gt;</description></item><item><title>Virtualization Driver</title><link>https://docs.opennebula.io/7.2/product/integration_references/infrastructure_drivers_development/devel-vmm/</link><pubDate>Mon, 17 Feb 2025 00:00:00 +0000</pubDate><guid>https://docs.opennebula.io/7.2/product/integration_references/infrastructure_drivers_development/devel-vmm/</guid><description>&lt;p&gt;&lt;a id="devel-vmm"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;!--# Virtualization Driver --&gt;
&lt;p&gt;The component that deals with the hypervisor to create, manage, and get information about Virtual Machine objects is called Virtual Machine Manager (VMM for short). This component has two parts. The first one resides in the core and holds most of the general functionality common to all the drivers (and some specific), the second is the driver that is able to translate basic VMM actions to the hypervisor.&lt;/p&gt;</description></item><item><title>Storage Driver</title><link>https://docs.opennebula.io/7.2/product/integration_references/infrastructure_drivers_development/sd/</link><pubDate>Mon, 17 Feb 2025 00:00:00 +0000</pubDate><guid>https://docs.opennebula.io/7.2/product/integration_references/infrastructure_drivers_development/sd/</guid><description>&lt;p&gt;&lt;a id="sd"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;!--# Storage Driver --&gt;
&lt;p&gt;The Storage subsystem is highly modular. These drivers are separated into two logical sets:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;DS&lt;/strong&gt;: Datastore drivers. They serve the purpose of managing images: register, delete, and create empty datablocks.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;TM&lt;/strong&gt;: Transfer Manager drivers. They manage images associated with instantiated VMs.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="datastore-drivers-structure"&gt;Datastore Drivers Structure&lt;/h2&gt;
&lt;p&gt;Located under &lt;code&gt;/var/lib/one/remotes/datastore/&amp;lt;ds_mad&amp;gt;&lt;/code&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;cp&lt;/strong&gt;: copies/dumps the image to the datastore
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;ARGUMENTS&lt;/strong&gt;: &lt;code&gt;image_id&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;STDIN&lt;/strong&gt;: &lt;code&gt;datastore_image_dump&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;RETURNS&lt;/strong&gt;: &lt;code&gt;image_source image_format&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;datastore_image_dump&lt;/code&gt; is an XML dump of the driver action encoded in Base 64. See a decoded &lt;a href="https://docs.opennebula.io/7.2/product/integration_references/infrastructure_drivers_development/sd/#sd-dump"&gt;example&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;image_source&lt;/code&gt; is the image source which will be later sent to the transfer manager.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;mkfs&lt;/strong&gt;: creates a new empty image in the datastore
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;ARGUMENTS&lt;/strong&gt;: &lt;code&gt;image_id&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;STDIN&lt;/strong&gt;: &lt;code&gt;datastore_image_dump&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;RETURNS&lt;/strong&gt;: &lt;code&gt;image_source&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;datastore_image_dump&lt;/code&gt; is an XML dump of the driver action encoded in Base 64. See a decoded &lt;a href="https://docs.opennebula.io/7.2/product/integration_references/infrastructure_drivers_development/sd/#sd-dump"&gt;example&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;image_source&lt;/code&gt; is the image source which will be later sent to the transfer manager.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;rm&lt;/strong&gt;: removes an image from the datastore
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;ARGUMENTS&lt;/strong&gt;: &lt;code&gt;image_id&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;STDIN&lt;/strong&gt;: &lt;code&gt;datastore_image_dump&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;RETURNS&lt;/strong&gt;: &lt;code&gt;-&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;datastore_image_dump&lt;/code&gt; is an XML dump of the driver action encoded in Base 64. See a decoded &lt;a href="https://docs.opennebula.io/7.2/product/integration_references/infrastructure_drivers_development/sd/#sd-dump"&gt;example&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;stat&lt;/strong&gt;: returns the size of an image in Mb
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;ARGUMENTS&lt;/strong&gt;: &lt;code&gt;image_id&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;STDIN&lt;/strong&gt;: &lt;code&gt;datastore_image_dump&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;RETURNS&lt;/strong&gt;: &lt;code&gt;size&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;datastore_image_dump&lt;/code&gt; is an XML dump of the driver action encoded in Base 64. See a decoded &lt;a href="https://docs.opennebula.io/7.2/product/integration_references/infrastructure_drivers_development/sd/#sd-dump"&gt;example&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;size&lt;/code&gt; the size of the image in Mb.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;a id="clone"&gt;&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Monitoring Driver</title><link>https://docs.opennebula.io/7.2/product/integration_references/infrastructure_drivers_development/devel-im/</link><pubDate>Mon, 17 Feb 2025 00:00:00 +0000</pubDate><guid>https://docs.opennebula.io/7.2/product/integration_references/infrastructure_drivers_development/devel-im/</guid><description>&lt;p&gt;&lt;a id="devel-im"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;!--# Monitoring Driver --&gt;
&lt;p&gt;The Monitoring Drivers (or IM drivers) collect Host and Virtual Machine monitoring data by executing a monitoring agent in the Hosts. The agent periodically executes probes to collect data and periodically send this to the Front-end.&lt;/p&gt;
&lt;p&gt;This guide describes the internals of the monitoring system. It is also a starting point on how to create a new IM driver from scratch.&lt;/p&gt;
&lt;h2 id="message-structure"&gt;Message structure&lt;/h2&gt;
&lt;p&gt;The structure of monitoring message is:&lt;/p&gt;</description></item><item><title>Networking Driver</title><link>https://docs.opennebula.io/7.2/product/integration_references/infrastructure_drivers_development/devel-nm/</link><pubDate>Mon, 17 Feb 2025 00:00:00 +0000</pubDate><guid>https://docs.opennebula.io/7.2/product/integration_references/infrastructure_drivers_development/devel-nm/</guid><description>&lt;p&gt;&lt;a id="devel-nm"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;!--# Networking Driver --&gt;
&lt;p&gt;This component is in charge of configuring the network in the hypervisors. The purpose of this guide is to describe how to create a new network manager driver.&lt;/p&gt;
&lt;h2 id="driver-configuration-and-description"&gt;Driver Configuration and Description&lt;/h2&gt;
&lt;p&gt;To enable a new network manager driver, the first requirement is to make a new directory with the name of the driver in &lt;code&gt;/var/lib/one/remotes/vnm/&amp;lt;name&amp;gt;&lt;/code&gt; with these files:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;pre&lt;/strong&gt;: This driver should perform all the network related actions required before the Virtual Machine starts in a Host.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;post&lt;/strong&gt;: This driver should perform all the network related actions required after the Virtual Machine starts (actions which typically require the knowledge of the &lt;code&gt;tap&lt;/code&gt; interface the Virtual Machine is connected to).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;clean&lt;/strong&gt;: If any clean-up should be performed after the Virtual Machine shuts down, it should be placed here.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;vnet_create&lt;/strong&gt;: Virtual Network is being added to OpenNebula, do driver initialization.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;vnet_delete&lt;/strong&gt;: Virtual Network is being removed from OpenNebula, do a clean-up.&lt;/li&gt;
&lt;/ul&gt;









&lt;div class="alert alert-warning" role="alert"&gt;
 
 &lt;div class="alert-heading"&gt;
 &lt;i class="alert-icon fas fa-triangle-exclamation"&gt;&lt;/i&gt; Warning
 &lt;/div&gt;
 
 &lt;div class="alert-body"&gt;
 The above three files &lt;strong&gt;must exist&lt;/strong&gt;. If no action is required in them a simple &lt;code&gt;exit 0&lt;/code&gt; will be enough.
 &lt;/div&gt; 
&lt;/div&gt;









&lt;div class="alert alert-warning" role="alert"&gt;
 
 &lt;div class="alert-heading"&gt;
 &lt;i class="alert-icon fas fa-triangle-exclamation"&gt;&lt;/i&gt; Warning
 &lt;/div&gt;
 
 &lt;div class="alert-body"&gt;
 Remember that any change in the &lt;code&gt;/var/lib/one/remotes&lt;/code&gt; directory won’t be effective in the Hosts until you execute, as &lt;code&gt;oneadmin&lt;/code&gt;: &lt;code&gt;onehost sync -f&lt;/code&gt;
 &lt;/div&gt; 
&lt;/div&gt;
&lt;p&gt;Virtual Machine actions and their relation with Network actions:&lt;/p&gt;</description></item><item><title>Authentication Driver</title><link>https://docs.opennebula.io/7.2/product/integration_references/infrastructure_drivers_development/devel-auth/</link><pubDate>Mon, 17 Feb 2025 00:00:00 +0000</pubDate><guid>https://docs.opennebula.io/7.2/product/integration_references/infrastructure_drivers_development/devel-auth/</guid><description>&lt;p&gt;&lt;a id="devel-auth"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;!--# Authentication Driver --&gt;
&lt;p&gt;This guide will show you how to develop a new driver for OpenNebula to interact with an external authentication service.&lt;/p&gt;
&lt;p&gt;OpenNebula comes with an internal user/password way of authentication, this is called &lt;code&gt;core&lt;/code&gt;. To be able to use other auth methods there is a system that performs authentication with external systems. Authentication drivers are responsible for getting the user credentials from the OpenNebula database and they login and answer whether the authentication is correct or not.&lt;/p&gt;</description></item><item><title>Market Driver</title><link>https://docs.opennebula.io/7.2/product/integration_references/infrastructure_drivers_development/devel-market/</link><pubDate>Mon, 17 Feb 2025 00:00:00 +0000</pubDate><guid>https://docs.opennebula.io/7.2/product/integration_references/infrastructure_drivers_development/devel-market/</guid><description>&lt;p&gt;&lt;a id="devel-market"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;!--# Market Driver --&gt;
&lt;p&gt;The Market Driver is in charge of managing both Marketplaces and Marketplace Apps.&lt;/p&gt;
&lt;h2 id="marketplace-drivers-structure"&gt;Marketplace Drivers Structure&lt;/h2&gt;
&lt;p&gt;The main drivers are located under &lt;code&gt;/var/lib/one/remotes/market/&amp;lt;market_mad&amp;gt;&lt;/code&gt;. Marketplaces support the following operations:&lt;/p&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Action&lt;/th&gt;
 &lt;th&gt;Description&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;create&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Create a new Marketplace.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;monitor&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;This automatic action discovers the available Marketplace Apps and&lt;br/&gt;monitors the available space of the Marketplace.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;delete&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Removes a Marketplace from OpenNebula. For a Public Marketplace,&lt;br/&gt;it will also remove the Marketplace Apps, but for any other type of&lt;br/&gt;Marketplace this will not remove the Marketplace Apps, and will&lt;br/&gt;only work if the Marketplace is empty.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;em&gt;other&lt;/em&gt;&lt;/td&gt;
 &lt;td&gt;Generic actions common to OpenNebula resources are also available:&lt;br/&gt;&lt;code&gt;update&lt;/code&gt;, &lt;code&gt;chgrp&lt;/code&gt;, &lt;code&gt;chown&lt;/code&gt;, &lt;code&gt;chmod&lt;/code&gt; and &lt;code&gt;rename&lt;/code&gt;.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;As for the Marketplace Apps, they support these actions:&lt;/p&gt;</description></item><item><title>IPAM Driver</title><link>https://docs.opennebula.io/7.2/product/integration_references/infrastructure_drivers_development/devel-ipam/</link><pubDate>Mon, 17 Feb 2025 00:00:00 +0000</pubDate><guid>https://docs.opennebula.io/7.2/product/integration_references/infrastructure_drivers_development/devel-ipam/</guid><description>&lt;p&gt;&lt;a id="devel-ipam"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;!--# IPAM driver --&gt;
&lt;p&gt;An IPAM driver lets you delegate IP lease management to an external component. This way you can coordinate IP use with other virtual or bare-metal servers in your data center. To effectively use an external IPAM you need to develop four action scripts that hook on different points of the IP network/lease life-cycle.&lt;/p&gt;
&lt;p&gt;Note that OpenNebula includes a built-in internal IPAM. You need to develop this component if you are using an IPAM server and want to coordinate OpenNebula with it.&lt;/p&gt;</description></item></channel></rss>