BonFIRE logo and link to main BonFIRE site

Table Of Contents

Previous topic

Command Line Example of Using the Experiment Manager

Next topic

BonFIRE Portal

This Page

OVF Experiment Descriptor

Open Virtualization Format (OVF: http://dmtf.org/standards/ovf) is used in BonFIRE to specify resources for an initial deployment in a single experiment description.

Standard OVF and BonFIRE Extensions

BonFIRE OVF descriptor uses the standard OVF to specify resources for an initial deployment of an experiment. Although, because the standard OVF is original designed for self-configuration (customization parameters are known in pre-deployment time) and lacks deployment constrains (e.g. where to deploy a VM, like testbed location), OVF is extended wherever is required by BonFIRE according to the OVF extensibility mechanisms proposed by DMTF (through introducing new components, and new attributes for existing components). The following attributes and components are defined as BonFIRE OVF extensions:

New BonFIRE attributes

  • walltime: to specify duration of an experiment
  • location: to specify location of a BonFIRE testbed site

New BonFIRE components

  • InstanceType: to specify a BonFIRE instance type.
  • NetworkMap: to map a network definition of OVF onto a concrete BonFIRE testbed site.
  • NewNetwork: which is a sub-component of NetworkMap. It is used when a new network will be created.

BonFIRE OVF schema

The BonFIRE OVF schema can be found in OVF schema

Introduction of the OVF sections used in BonFIRE

The following structure and sections of OVF are used currently in BonFIRE:

- Envelope
      - References
      - DiskSection
      - NetworkSection
      - VirtualSystemCollection
              - StartupSection
              - VirtualSystemCollection
                      - ProductSection
                      - VirtualSystem
                              - VirtualHardwareSection

Envelope

Envelope is the root element for an OVF document.

References

The file reference part defined by the References element refers the location of an existing storage at a BonFIRE testbed site, e.g.

<ovf:References>
          <ovf:File ovf:id="master" ovf:href="https://api.bonfire.grid5000.fr/locations/fr-inria/storages/293/image"/>
          <ovf:File ovf:id="node" ovf:href="https://api.bonfire.grid5000.fr/locations/be-ibbt/storages/5/image"/>
  </ovf:References>

DiskSection

A DiskSection describes meta-information about virtual disks.

<ovf:DiskSection>
          <ovf:Info>  </ovf:Info>
          <ovf:Disk ovf:diskId="master" ovf:capacity="" ovf:fileRef="master"/>
          <ovf:Disk ovf:diskId="node" ovf:capacity="" ovf:fileRef="node"/>
          <ovf:Disk ovf:diskId="master-tmp" ovf:capacity="1024" ovf:fileRef="" ovf:format="ext3" bonfire:location="fr-inria" bonfire:storagetype="DATABLOCK"/>
          <ovf:Disk ovf:diskId="node-tmp" ovf:capacity="1024"ovf:fileRef="" ovf:format="ext3" bonfire:location="be-ibbt" bonfire:storagetype="DATABLOCK"/>
  </ovf:DiskSection>

NetworkSection

The NetworkSection element shall list all logical networks used in OVF.

<ovf:NetworkSection>
          <ovf:Info>  </ovf:Info>
          <ovf:Network ovf:name="private_net_hlrs"/>
          <ovf:Network ovf:name="private_net_inria"/>
          <ovf:Network ovf:name="private_net_epcc"/>
          <bonfire:NetworkMap ovfNetworkName="private_net_inria" bonfireNetworkRef="BonFIRE WAN" location="fr-inria"/>
          <bonfire:NetworkMap ovfNetworkName="private_net_hlrs" bonfireNetworkRef="BonFIRE WAN" location="de-hlrs"/>
          <bonfire:NetworkMap ovfNetworkName="private_net_epcc" bonfireNetworkRef="BonFIRE WAN" location="uk-epcc"/>
  </ovf:NetworkSection>

New created network

In BonFIRE a new network can be created at IBBT.

<ovf:NetworkSection>
           <ovf:Info> </ovf:Info>
           <ovf:Network ovf:name="public">
                   <ovf:Description>Network to provide administrative access to master</ovf:Description>
           </ovf:Network>
           <ovf:Network ovf:name="private_net, fr-inria">
                   <ovf:Description>Private Network</ovf:Description>
           </ovf:Network>
           <ovf:Network ovf:name="private_net, be-ibbt">
                   <ovf:Description>Private Network</ovf:Description>
           </ovf:Network>
           <ovf:Network ovf:name="my new network">
                   <ovf:Description>Create a new Network</ovf:Description>
           </ovf:Network>
           <bonfire:NetworkMap ovfNetworkName="public" bonfireNetworkRef="https://api.integration.bonfire.grid5000.fr:443/locations/fr-inria/networks/2"/>
           <bonfire:NetworkMap ovfNetworkName="private_net, fr-inria" bonfireNetworkRef="BonFIRE WAN" location="fr-inria"/>
           <bonfire:NetworkMap ovfNetworkName="private_net, be-ibbt" bonfireNetworkRef="BonFIRE WAN" location="be-ibbt"/>
           <bonfire:NetworkMap ovfNetworkName="my new network">
                   <bonfire:NewNetwork>
                           <bonfire:Name>new network at IBBT</bonfire:Name>
                           <bonfire:Location>be-ibbt</bonfire:Location>
                           <bonfire:Address>192.86.00.00</bonfire:Address>
                           <bonfire:Size>C</bonfire:Size>
                           <bonfire:Lossrate>0.5</bonfire:Lossrate>
                           <bonfire:Bandwidth>100</bonfire:Bandwidth>
                           <bonfire:Latency>4</bonfire:Latency>
                   </bonfire:NewNetwork>
           </bonfire:NetworkMap>
   </ovf:NetworkSection>

VirtualSystemCollection

VirtualSystemCollection represents a list of virtual machines, allows one or many virtual machines in different logical grouping, and supports multi-tier applications. This is the upper level VirtualSystemCollection, walltime required for the duration of an experiment is specified here.

<ovf:VirtualSystemCollection ovf:id="My Experiment" bonfire:walltime="120">

StartupSection

StartupSection specifies the order in which compute resources will be instantiated.

<ovf:StartupSection>
                  <ovf:Info>Master has to be booted before any Node</ovf:Info>
                  <ovf:Item ovf:id="master" ovf:order="0"/>
                  <ovf:Item ovf:id="node" ovf:order="1"/>
  </ovf:StartupSection>

VirtualSystemCollection

This is the low level VirtualSystemCollection which is used to specify the location of a virtual machine.

<ovf:VirtualSystemCollection ovf:id="site 1" bonfire:location="fr-inria">

VirtualSystem

A virtual machine is a full encapsulation of the virtual hardware, virtual disks, and the metadata associated with it.

ProductSection

ProductSection is used for specifying the required Contextualization information.

<ovf:ProductSection ovf:class=" ">
                <ovf:Info>contextualization</ovf:Info>
                <ovf:Product>Node</ovf:Product>
                <ovf:Version>0.1</ovf:Version>
            <ovf:Property ovf:key="MasterIP" ovf:type="string" ovf:value="@IP(BonFIRE WAN, master)"/>
  </ovf:ProductSection>

VirtualHardwareSection

VirtualHardwareSection describes hardware specifications of a virtual machine.

<ovf:VirtualHardwareSection>
                  <ovf:Info/>
                  <ovf:System>
                          <vssd:ElementName/>
                          <vssd:InstanceID/>
                          <bonfire:InstanceType>small</bonfire:InstanceType>
                  </ovf:System>
                  <ovf:Item>
                          <rasd:AutomaticAllocation>true</rasd:AutomaticAllocation>
                          <rasd:Connection>private_net, be-ibbt</rasd:Connection>
                          <rasd:ElementName>Ethernet adapter on private_net network</rasd:ElementName>
                          <rasd:InstanceID>3</rasd:InstanceID>
                          <rasd:ResourceType>10</rasd:ResourceType>
                  </ovf:Item>
                  <ovf:Item>
                          <rasd:AutomaticAllocation>true</rasd:AutomaticAllocation>
                          <rasd:Connection>my new network</rasd:Connection>
                          <rasd:ElementName>new created network at IBBT</rasd:ElementName>
                          <rasd:InstanceID>3</rasd:InstanceID>
                          <rasd:ResourceType>10</rasd:ResourceType>
                  </ovf:Item>
                  <ovf:Item>
                          <rasd:ElementName>Harddisk 1</rasd:ElementName>
                          <rasd:HostResource>ovf://disk/node</rasd:HostResource>
                          <rasd:InstanceID>5</rasd:InstanceID>
                          <rasd:Parent>4</rasd:Parent>
                          <rasd:ResourceType>17</rasd:ResourceType>
                  </ovf:Item>
                  <ovf:Item>
                          <rasd:ElementName>Harddisk 2</rasd:ElementName>
                          <rasd:HostResource>ovf://disk/node-tmp</rasd:HostResource>
                          <rasd:InstanceID>5</rasd:InstanceID>
                          <rasd:Parent>4</rasd:Parent>
                          <rasd:ResourceType>17</rasd:ResourceType>
                  </ovf:Item>
   </ovf:VirtualHardwareSection>