[one-users] [RFC] Tool for Management of Service Execution

Ignacio Martin Llorente llorente at dacya.ucm.es
Tue Apr 21 02:25:54 PDT 2009


Dear users,

We are evaluating the development of a new tool/command (oneservice?)  
to support the submission of a full service (as group of  
interconnected VMs). The user would define using a template the  
service components, number of instances, deployment ordering, and  
context definition. Below you can see a proposal for the template by  
Ruben.

We would appreciate any feedback you could provide using the mailing  
list or the development issue:

http://dev.opennebula.org/issues/100

Regards

Ignacio

---------------------

= 
= 
= 
= 
= 
= 
= 
= 
========================================================================
SERVICE DEFINITION TEMPLATE
= 
= 
= 
= 
= 
= 
= 
= 
========================================================================

# Define service components and its cardinality (number of instances)
# Syntax:
#   COMPONENT <UNIQUE_COMPONENT_NAME>  <COMPONENT_TEMPLATE>   
<CARDINALITY=1>

COMPONENT master  master.template	1
COMPONENT node    node.template		10

# Define deploy order, if you need a soft synchronization point, e.g. to
# instantiate IPs correctly
# Syntax:
#    DEPLOY <LIST OF COMPONENTS>

DEPLOY master, node

# Define dependencies if a harder synchornization is needed, i.e. do  
not submit
# children until parent reaches RUNNING
# Syntax:
#    PARENT  <LIST OF COMPONENTS> CHILD <LIST OF COMPONENTS>

PARENT master CHILD node


Example, The Cluster Service DAG:

COMPONENT sge_master master.one
COMPONENT sge_node node.one 5
DEPLOY sge_master, seg_node

= 
= 
= 
= 
= 
= 
= 
= 
========================================================================
CONTEXT SUPPORT IN TEMPLATES
= 
= 
= 
= 
= 
= 
= 
= 
========================================================================

Context definition: "A set of variables that are made available to the
VMs at boot time". Now you can refer to other service components  
context within
the component template. From the RFC:

CONTEXT = [
  <VARIABLE> = <VALUE>
  FILE       = <path to file to be included in the iso>
  DIRECTORY  = <path to directory to be included in the iso>
  TARGET     = <device to map the context block device>
]

VARIABLEs, are stored in sh syntax in a known file in the context  
block device.
Example:

CONTEXT = [
    HOSTNAME   = "sge_master"
    REPOSITORY = "https://dsa-research.org/repo"
    TARGET     = sdb
]

The context variables can refer to other template attributes. We use the
following syntax:

  $<ATTRIBUTE_NAME>

Example:
NAME = sge_master
CPU  = 1.0

...

CONTEXT = [
  HOSTNAME = "$NAME"
  TARGET   = sdb
]

If you want to address a multiple value attribute just put its name  
before the
target attribute:

  $<ATTRIBUTE_NAME>[<SUB_ATTRIBUTE_NAME>]

Example:

NIC = [ NETWORK="Public" ]

CONTEXT = [
  HOSTNAME = $NAME
  IP       = $NIC[IP]
]

If there are several attributes with the same name, select one by  
adding the
value of other attribute:

  $ATTRIBUTE_NAME[SUB_ATTRIBUTE_NAME, SUB_ATTRIBUTE_NAME = VALUE]

Example:

NIC = [ NETWORK="Public" ]
NIC = [ NETWORK="Blue" ]

CONTEXT = [
  HOSTNAME = $NAME
  IP       = $NIC[IP, NETWORK="Blue"]
]

Now you can refer to CONTEXT VARIABLES of other components using:

$<COMPONENT>.<VARIABLE>

Example:

NIC = [ NETWORK="Blue" ]

CONTEXT = [
  HOSTNAME = $NAME
  IP       = $NIC[IP]
  MASTER_NAME = $sge_master.HOSTNAME
  MASTER_IP   = $sge_master.IP
]


--
Ignacio M. Llorente, Full Professor (Catedratico): http://dsa-research.org/doku.php?id=people:llorente
DSA Research Group:  web http://dsa-research.org and blog http://blog.dsa-research.org
Globus GridWay Metascheduler: http://www.GridWay.org
OpenNebula Virtual Infrastructure Engine: http://www.OpenNebula.org













More information about the Users mailing list