<?xml version="1.0" encoding="UTF-8"?>
<!-- 

     OVF descriptor for SGE service deployment
     
     Authors:
     Fermin Galan (Telefonica I+D)
     Americo Sampaio (SAP Research)
     Luis Rodero-Merino (Telefonica I+D)
     Irit Loy (IBM Haifa Research)
     Victor Gil (Sun Microsystems)
     Luis M. Vaquero (Telefonica I+D)
     Mark Wusthoff (SAP Research)
     
     This work is partially supported by the RESERVOIR UE FP7 Project through
     Grant Number 215605.
     
     Additional thanks to David Perales (Telefonica I+D), Eliezer Levy (SAP) and 
     Stuart Clayman (University College London).
     
  -->
<Envelope xmlns:ovf="http://schemas.dmtf.org/ovf/envelope/1" xmlns="http://schemas.dmtf.org/ovf/envelope/1" xmlns:rsrvr="http://reservoir-fp7.eu/ovf/comsware-extensions" xmlns:vssd="http://schemas.dmtf.org/wbem/wscim/1/cim-schema/2/CIM_VirtualSystemSettingData" xmlns:rasd="http://schemas.dmtf.org/wbem/wscim/1/cim-schema/2/CIM_ResourceAllocationSettingData" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://reservoir-fp7.eu/ovf/comsware-extensions comsware_extensions.xsd">

  <References>
    <File ovf:id="master" ovf:href="http://images.reservoir-fp7.eu/master.qcow2"/>
    <File ovf:id="execution" ovf:href="http://images.reservoir-fp7.eu/execution.qcow2"/>
  </References>
  
  <DiskSection>	
    <Info>The SGE service uses two disk templates, one for VMMaster and another for VMExecutor</Info>
    <Disk ovf:diskId="master" ovf:fileRef="master" ovf:capacity="1536MB" ovf:format="http://www.gnome.org/~markmc/qcow-image-format.html"/>
    <Disk ovf:diskId="execution" ovf:fileRef="execution" ovf:capacity="1024MB" ovf:format="http://www.gnome.org/~markmc/qcow-image-format.html"/>
  </DiskSection>
  
  <NetworkSection>
    <Info>The SGE service consisers one internal network (sge_net) and one pubilc (admin_net)</Info>
    <Network ovf:name="sge_net">
      <Description>Network to connect service components (VMMaster and VMExecutors)</Description>
    </Network>
    <Network ovf:name="admin_net" rsrvr:public="yes">
      <Description>Network to provide administrative access to VMMaster</Description>
    </Network>
  </NetworkSection>

  <rsrvr:KPIsSection>
    <Info>SGE only uses one KPI: the length of the jobs queue</Info>
    <rsrvr:KPIs>
      <rsrvr:KPI KPIname="queueSize"/>
    </rsrvr:KPIs>
  </rsrvr:KPIsSection>
  
  <rsrvr:ElasticityRulesSection>
    <Info>There are two elasticity rules, to scale up and down VMExecutor components</Info>
    <rsrvr:Rule>
      <rsrvr:RuleName>ScaleUp</rsrvr:RuleName>
      <rsrvr:Trigger checkingPeriod="5000ms" condition="@kpis.queueSize/(@components.VMExecutor.instances.amount + 1) &gt; 20"/>
      <rsrvr:Action run="createVM(components.VMExecutor)"/>
    </rsrvr:Rule>
    <rsrvr:Rule>
      <rsrvr:RuleName>ScaleDown</rsrvr:RuleName>
      <rsrvr:Trigger checkingPeriod="5000ms" condition="@kpis.queueSize/(@components.VMExecutor.replicas.amount + 1) &lt; 10"/>
      <rsrvr:Action run="removeVM(components.VMExecutor)"/>
    </rsrvr:Rule>
  </rsrvr:ElasticityRulesSection>
  
  <!-- VM descriptions -->

  <VirtualSystemCollection ovf:id="SGEService">
    <Info>The SGE service is composed by two types of VMs, VMMaster and VMExecutor</Info>
    
    <StartupSection>
      <Info>VMMaster has to be booted before any VMExecutor</Info>
      <Item ovf:id="VMMaster" ovf:order="0" ovf:waitingForGuest="true"/>
      <Item ovf:id="VMExecutor" ovf:order="1"/>
    </StartupSection>

    <!-- Master daemon configuration parameters -->
    <ProductSection ovf:class="com.sun.master" ovf:instance="VMMaster">
      <Info>Product customization for the installed master software</Info>
      <Product>SGE Master</Product>
      <Version>1.0</Version>
      <Property ovf:key="IPforMaster" ovf:type="string" ovf:value="@IP(sge_net)"/>
      <Property ovf:key="KPIChannel" ovf:type="string" ovf:value="@KPIChannel"/>
      <Property ovf:key="KPIQualifier" ovf:type="string" ovf:value="@KPIQualifier"/>
    </ProductSection>
    <!-- Note: Executor daemon on the mater image does not need any configuration parameters -->

    <!-- Executor daemon on the executor image configuration parameters -->                                
    <ProductSection ovf:class="com.sun.executor" ovf:instance="VMExecutor">
      <Info>Product customization for the installed executor software</Info>
      <Product>SGE Executor</Product>
      <Version>1.0</Version>               
      <Property ovf:key="masterIP" ovf:type="string" ovf:value="@VMMaster.IPforMaster"/>
      <Property ovf:key="hostname" ovf:type="string" ovf:value="executor0@VMid"/>               
    </ProductSection>
    
    <VirtualSystem ovf:id="VMMaster" rsrvr:min="1" rsrvr:max="1" rsrvr:initial="1">
      <Info>Master VM description</Info>						
      
      <VirtualHardwareSection>
        <Info>Virtual Hardware Requirements: 512Mb, 2 CPU, 1 disk, 1 nic</Info>
        <System>
          <vssd:ElementName>Virtual Hardware Family</vssd:ElementName>
          <vssd:InstanceID>0</vssd:InstanceID>
          <vssd:VirtualSystemType>vmx-4</vssd:VirtualSystemType>
        </System>
        <Item>
          <rasd:Description>Number of virtual CPUs</rasd:Description>
          <rasd:ElementName>2 virtual CPU</rasd:ElementName>
          <rasd:InstanceID>1</rasd:InstanceID>
          <rasd:ResourceType>3</rasd:ResourceType>
          <rasd:VirtualQuantity>2</rasd:VirtualQuantity>
        </Item>
        <Item>
          <rasd:AllocationUnits>MegaBytes</rasd:AllocationUnits>
          <rasd:Description>Memory Size</rasd:Description>
          <rasd:ElementName>512 MB of memory</rasd:ElementName>
          <rasd:InstanceID>2</rasd:InstanceID>
          <rasd:ResourceType>4</rasd:ResourceType>
          <rasd:VirtualQuantity>512</rasd:VirtualQuantity>
        </Item>
        <Item>
          <rasd:AutomaticAllocation>true</rasd:AutomaticAllocation>
          <rasd:Connection>sge_net</rasd:Connection>
          <rasd:ElementName>Ethernet adapter on sge_net network</rasd:ElementName>
          <rasd:InstanceID>3</rasd:InstanceID>
          <rasd:ResourceType>10</rasd:ResourceType>
        </Item>
        <Item>
          <rasd:AutomaticAllocation>true</rasd:AutomaticAllocation>
          <rasd:Connection>admin_net</rasd:Connection>
          <rasd:ElementName>Ethernet adapter on admin_net network</rasd:ElementName>
          <rasd:InstanceID>3</rasd:InstanceID>
          <rasd:ResourceType>10</rasd:ResourceType>
        </Item>			   
        <Item>
          <rasd:ElementName>Harddisk 1</rasd:ElementName>
          <rasd:HostResource>ovf://disk/master</rasd:HostResource>
          <rasd:InstanceID>5</rasd:InstanceID>
          <rasd:Parent>4</rasd:Parent>
          <rasd:ResourceType>17</rasd:ResourceType>
        </Item>
      </VirtualHardwareSection>

    </VirtualSystem>

    <VirtualSystem ovf:id="VMExecutor" rsrvr:min="1" rsrvr:max="9" rsrvr:initial="3">
      <Info>Executor VM description</Info>
      
      <VirtualHardwareSection>
        <Info>Virtual Hardware Requirements: 256Mb, 1 CPU, 1 disk, 1 nic</Info>
        <System>
          <vssd:ElementName>Virtual Hardware Family</vssd:ElementName>
          <vssd:InstanceID>0</vssd:InstanceID>
          <vssd:VirtualSystemType>vmx-4</vssd:VirtualSystemType>
        </System>
        <Item>
          <rasd:Description>Number of virtual CPUs</rasd:Description>
          <rasd:ElementName>1 virtual CPU</rasd:ElementName>
          <rasd:InstanceID>1</rasd:InstanceID>
          <rasd:ResourceType>3</rasd:ResourceType>
          <rasd:VirtualQuantity>1</rasd:VirtualQuantity>
        </Item>
        <Item>
          <rasd:AllocationUnits>MegaBytes</rasd:AllocationUnits>
          <rasd:Description>Memory Size</rasd:Description>
          <rasd:ElementName>256 MB of memory</rasd:ElementName>
          <rasd:InstanceID>2</rasd:InstanceID>
          <rasd:ResourceType>4</rasd:ResourceType>
          <rasd:VirtualQuantity>256</rasd:VirtualQuantity>
        </Item>
        <Item>
          <rasd:AutomaticAllocation>true</rasd:AutomaticAllocation>
          <rasd:Connection>service_network</rasd:Connection>
          <rasd:ElementName>Ethernet adapter on sge_net network</rasd:ElementName>
          <rasd:InstanceID>3</rasd:InstanceID>
          <rasd:ResourceType>10</rasd:ResourceType>
        </Item>
        <Item>
          <rasd:ElementName>Harddisk 1</rasd:ElementName>
          <rasd:HostResource>ovf://disk/execution</rasd:HostResource>
          <rasd:InstanceID>5</rasd:InstanceID>
          <rasd:Parent>4</rasd:Parent>
          <rasd:ResourceType>17</rasd:ResourceType>
        </Item>
      </VirtualHardwareSection>
    </VirtualSystem>				
    
  </VirtualSystemCollection>
  
</Envelope>