Changes between Version 38 and Version 39 of Internal/Infrastructure/OMF/GridServicesApi


Ignore:
Timestamp:
Apr 7, 2008, 9:35:46 PM (16 years ago)
Author:
seskar
Comment:

Legend:

Unmodified
Added
Removed
Modified
  • Internal/Infrastructure/OMF/GridServicesApi

    v38 v39  
    1 == ORBIT API ==
     1= ORBIT Services API =
    22
    3 ORBIT support services have web based XML interfaces.  They all use the same framework and, therefore, have like syntax.  The services are accessed using either of the following schemes:
     3All ORBIT support services have web based XML interfaces. eachs service is a group with a path and name.
     4
     5To find out which services are available at a particular server issue the following:
    46{{{
    5 http://<serviceGroup name>:5012/<serviceGroup name>/<service name>?<1st arg>=<arg_1_value>&<2nd_arg>=<arg_2_value>
     7http://<server>:5022/
     8}}}
     9
     10After sissuing the following html querry:
     11{{{
     12http://repository2.orbit-lab.org:5022/
     13}}}
     14
     15the server will respond with the list of service groups available:
     16
     17{{{
     18<serviceGroups>
     19  <serviceGroup path="/inventory" name="inventory">
     20    <info>
     21      Service to retrieve information about nodes or testbeds from the Inventory Database
     22    </info>
     23  </serviceGroup>
     24  <serviceGroup path="/frisbee" name="frisbee">
     25    <info>
     26      Service to control frisbee servers to stream specific images
     27    </info>
     28  </serviceGroup>
     29  <serviceGroup path="/pxe" name="pxe">
     30    <info>
     31      Service to facilitate PXE to boot into specific image
     32    </info>
     33  </serviceGroup>
     34</serviceGroups>
     35}}}
     36
     37In this particular case, theserver has three service groups for three services: PXE, fribee and inventory.
     38
     39They all use the same framework and, therefore, have like syntax.  The services are accessed using either of the following schemes:
     40{{{
     41http://<server>:5022/<service name>?<1st arg>=<arg_1_value>&<2nd_arg>=<arg_2_value>
     42}}}
    643
    744For instance, to turn on node1-1 using the CMC (from the console of one of the sandboxes
    845or the grid), you would issue the following:
    9 
    10 wget -O - "http://cmc:5012/cmc/nodeSetOn?nodes=[1,1]"
     46{{{
     47wget -O - "http://cmc:5022/cmc/nodeSetOn?nodes=[1,1]"
    1148}}}
    1249
    13 The services are location aware and will manipulate the resources for that specific location.  For instance, querying the CMC to turn on node1-1 from the console on sb1 will turn on node1-1 on sb1 and not any other resource.  Also, it is impossible for users in one location to issue commands for another.  For example, it is impossible to turn on nodes on the grid from the console of sb1.  One of the obvious advantages of this is experiment scripts/applications need only mention the service name to be portable.
     50The services API allows for location (domain) awareness to allow resources only for that specific domain.  For instance, querying the CMC to turn on node1-1 from the console on sb1 will turn on node1-1 on sb1 and not any other resource.  Also, it is impossible for users in one location to issue commands for another.  For example, it is impossible to turn on nodes on the grid from the console of sb1.  One of the obvious advantages of this is experiment scripts/applications need only mention the service name to be portable.
    1451
    15 Below is a list of available services and their corresponding arguments.
     52The grid service framework allows for service authentication module trough ...
     53
     54= Grid Services =
    1655
    1756== Chassis Manager Controller (CMC) ==
    18 
    19 Services and arguments
    20 
    21 {{{
    22 <serviceGroup name="cmc">
    23           <info>Controls nodes through their attached CMs</info>
    24           <service name="on">
    25             <info>Switch on a node at a specific coordinate</info>
    26             <args><arg name="x" value="x_coord"/></args>
    27             <args><arg name="y" value="y_coord"/></args>
    28           </service>
    29           <service name="nodeSetOn">
    30             <info>Switch on a specified set of nodes</info>
    31             <args><arg name="nodes" value="set_of_nodes"/></args>
    32           </service>
    33           <service name="turnOn">
    34             <info>Switch on nodes for a specified interface</info>
    35             <args><arg name="alias" value="alias_name"/></args>
    36           </service>
    37           <service name="allOn">
    38             <info>Switch all nodes on</info>
    39           </service>
    40           <service name="off">
    41             <info>Switch on a node at a specific coordinate</info>
    42             <args><arg name="x" value="x_coord"/></args>
    43             <args><arg name="y" value="y_coord"/></args>
    44           </service>
    45           <service name="offHard">
    46             <info>Switch off hard a node at a specific coordinate</info>
    47             <args><arg name="x" value="x_coord"/></args>
    48             <args><arg name="y" value="y_coord"/></args>
    49           </service>
    50           <service name="allOffHard">
    51             <info>Switch all nodes off</info>
    52           </service>
    53           <service name="nodeSetOffHard">
    54             <info>Switch Off Hard a specified set of nodes</info>
    55             <args><arg name="nodes" value="set_of_nodes"/></args>
    56           </service>
    57           <service name="offSoft">
    58             <info>Switch off soft a node at a specific coordinate</info>
    59             <args><arg name="x" value="x_coord"/></args>
    60             <args><arg name="y" value="y_coord"/></args>
    61           </service>
    62           <service name="allOffSoft">
    63             <info>Switch all nodes off</info>
    64           </service>
    65           <service name="nodeSetOffSoft">
    66             <info>Switch Off Soft a specified set of nodes</info>
    67             <args><arg name="nodes" value="set_of_nodes"/></args>
    68           </service>
    69           <service name="reset">
    70             <info>Reset a node at a specific coordinate</info>
    71             <args><arg name="x" value="x_coord"/></args>
    72             <args><arg name="y" value="y_coord"/></args>
    73           </service>
    74           <service name="allReset">
    75             <info>Reset all nodes</info>
    76           </service>
    77           <service name="nodeSetReset">
    78             <info>Reset a specified set of nodes</info>
    79             <args><arg name="nodes" value="set_of_nodes"/></args>
    80           </service>
    81           <service name="identify">
    82             <info>Identify a node at a specific coordinate</info>
    83             <args><arg name="x" value="x_coord"/></args>
    84             <args><arg name="y" value="y_coord"/></args>
    85           </service>
    86           <service name="allIdentify">
    87             <info>Identify all nodes</info>
    88           </service>
    89           <service name="nodeSetIdentify">
    90             <info>Identify a specified set of nodes</info>
    91             <args><arg name="nodes" value="set_of_nodes"/></args>
    92           </service>
    93           <service name="updateEnable">
    94             <info>UpdateEnable a node at a specific coordinate</info>
    95             <args><arg name="x" value="x_coord"/></args>
    96             <args><arg name="y" value="y_coord"/></args>
    97           </service>
    98           <service name="nodeSetUpdateEnable">
    99             <info>Update Enable a specified set of nodes</info>
    100             <args><arg name="nodes" value="set_of_nodes"/></args>
    101           </service>
    102           <service name="updateDisable">
    103             <info>UpdateDisable a node at a specific coordinate</info>
    104             <args><arg name="x" value="x_coord"/></args>
    105             <args><arg name="y" value="y_coord"/></args>
    106           </service>
    107           <service name="nodeSetUpdateDisable">
    108             <info>Update Disable a specified set of nodes</info>
    109             <args><arg name="nodes" value="set_of_nodes"/></args>
    110           </service>
    111           <service name="hostEnroll">
    112             <info>Host Enroll a node at a specific coordinate</info>
    113             <args><arg name="x" value="x_coord"/></args>
    114             <args><arg name="y" value="y_coord"/></args>
    115           </service>
    116           <service name="allHostEnroll">
    117             <info>Host Enroll all nodes</info>
    118           </service>
    119           <service name="nodeSetHostEnroll">
    120             <info>Host Enroll a specified set of nodes</info>
    121             <args><arg name="nodes" value="set_of_nodes"/></args>
    122           </service>
    123           <service name="nodeStatus">
    124             <info>Return the status of a  node at a specific coordinate</info>
    125             <args><arg name="x" value="x_coord"/></args>
    126             <args><arg name="y" value="y_coord"/></args>
    127           </service>
    128           <service name="setNodeInactive">
    129             <info>Set Inactive a Node from the Testbed</info>
    130             <args><arg name="x" value="x_coord"/></args>
    131             <args><arg name="y" value="y_coord"/></args>
    132           </service>
    133           <service name="nodeSetNodeInactive">
    134             <info>Set Inactive a specified set of nodes</info>
    135             <args><arg name="nodes" value="set_of_nodes"/></args>
    136           </service>
    137           <service name="setNodeActive">
    138             <info>Set Active a Node from the Testbed</info>
    139             <args><arg name="x" value="x_coord"/></args>
    140             <args><arg name="y" value="y_coord"/></args>
    141           </service>
    142           <service name="nodeSetNodeActive">
    143             <info>Set Active a specified set of nodes</info>
    144             <args><arg name="nodes" value="set_of_nodes"/></args>
    145           </service>
    146           <service name="allStatus">
    147             <info>Returns the status of the entire Testbed</info>
    148           </service>
    149           <service name="getActiveNodes">
    150             <info>Get List of all Active Nodes from the Testbed</info>
    151           </service>
    152           <service name="getNodes">
    153             <info>Get all Nodes for a specified domain</info>
    154             <args><arg name="nodes" value="set_of_nodes"/></args>
    155           </service>
    156           <service name="getAllNodes">
    157             <info>Get List of all Nodes in the Testbed</info>
    158           </service>
    159           <service name="getNodesInAlias">
    160              <info>Get all nodes for a specified interface</info>
    161              <args><arg name="alias" value="alias_name"/></args>
    162           </service>
    163         </serviceGroup>
    164 }}}
    165 
    166 Command redirection to other resources.
    167 {{{
    168 http://<serviceGroup name>:5012/<serviceGroup name>/<service name>?<domain>=<domain name>&<1st_arg>=<arg_1_value>&<2nd_arg>=<arg_2_value>
    169 
    170 Currently the valid domain name scheme is <subdomain-name>.orbit-lab.org, where
    171 subdomain-name = {grid,sb1,sb2,sb3,sb4,sb5,sb6,sb7,sb8,sb9}.
    172 
    173 For instance, to turn on node1-1.sb9.orbit-lab.org through node1-5.sb9.orbit-lab.org
    174 from an internal machine (i.e. internal1, internal2, internal3, internal4), you would issue the following:
    175 
    176 wget -O - "http://cmc:5012/cmc/nodeSetOn?domain=sb8.orbit-lab.org&nodes=[1,1..5]"
    177 
    178 It should be noted that most users will not need to specify the domain.  This is only for internal development use and
    179 will not work from any of the consoles.
    180 }}}
    181 
    182 Access Control Policy.
    183 {{{
    184 1.) Access is granted to ON (on, allOn, nodeSetOn), OFF (off, offHard, allOffHard,
    185     nodeSetOffHard, offSoft, nodeSetOffSoft, allOffSoft) and RESET (reset, nodeSetReset,
    186     allReset) services if you are in the same subdomain as the resource you are trying to
    187     control.
    188 
    189 2.) Access is granted to all services if you are on the internal subnet (10.0.0.0). The domain name
    190     needs to be specified in this case
    191 
    192 3.) Access is granted to STATUS (nodeStatus, allStatus) services from everywhere. The
    193     domain name needs to be specified in this case.
    194 }}}
    195 
    196 
    19757== Frisbee ==
    198 
    199 {{{
    200 <serviceGroup name="frisbee">
    201           <info>Serve node images via a frisbee server</info>
    202           <service name="getAddress">
    203             <info>Get the port number of a frisbee server serving a specified image</info>
    204             <args><arg name="img" value="imageName"/></args>
    205           </service>
    206           <service name="stop">
    207             <info>Stop serving a specified image</info>
    208             <args><arg name="img" value="imageName"/></args>
    209           </service>
    210           <service name="status">
    211             <info>Returns the status of either a specific daemon, or all of them</info>
    212             <args><arg name="img" value="imageName" optional="true"/></args>
    213           </service>
    214         </serviceGroup>
    215 }}}
    216 
     58== Inventory ==
     59== Login ==
     60== OML ==
    21761== PXE ==
    21862
    219 {{{
    220 <serviceGroup name="pxe">
    221           <info>Serve node images via a pxe server</info>
    222           <service name="setBootImage">
    223             <info>Configure PXE to boot a node with a specific ip address into a specifif image</info>
    224             <args><arg name="img" value="imageName"/></args>
    225             <args><arg name="node" value="nodeName"/></args>
    226             <args><arg name="ip" value="ipAddress"/></args>
    227           </service>
    228           <service name="clearBootImage">
    229             <info>Configure PXE to boot a node into the image on its disk</info>
    230             <args><arg name="node" value="nodeName"/></args>
    231             <args><arg name="ip" value="ipAddress"/></args>
    232           </service>
    233           <service name="removeAllBootImages">
    234             <info>Configure PXE to boot all nodes into the image on their disks</info>
    235           </service>
    236           <service name="status">
    237             <info>Returns a list of IP addresses and their associated boot image</info>
    238           </service>
    239         </serviceGroup>
    240 }}}
    241 
    242 == OML Collection Service ==
    243 
    244 {{{
    245 <serviceGroup name="oml">
    246           <info>Interface to OML collection server</info>
    247           <service name="start">
    248             <info>
    249               Start a collection server. The config information is expected
    250               to be in the body.
    251             </info>
    252           </service>
    253           <service name="stop">
    254             <info>Stop a specific collection service</info>
    255             <args><arg name="id" value="idReturnedByStart"/></args>
    256           </service>
    257           <service name="log">
    258             <info>Return the log file of the named service</info>
    259             <args><arg name="id" value="idReturnedByStart"/></args>
    260           </service>
    261           <service name="status">
    262             <info>Returning the status of the service</info>
    263           </service>
    264         </serviceGroup>
    265 }}}
    266