|
1
|
OMF Aggregate Manager - slicemgr service
|
|
2
|
========================================
|
|
3
|
|
|
4
|
The slicemgr service provides an XML-RPC bridge to an OMF testbed's
|
|
5
|
XMPP server. It provides interfaces to add and remove PubSub nodes on
|
|
6
|
the XMPP server. The service only allows manipulation of PubSub nodes
|
|
7
|
relating to the management of the resources of a slice.
|
|
8
|
|
|
9
|
The OMF PubSub nodes are organized as a tree (although XMPP does not
|
|
10
|
provide any support for hierarchical node structures). A diagram of the
|
|
11
|
OMF PubSub node tree can be found here:
|
|
12
|
|
|
13
|
http://omf.mytestbed.net/wiki/omf/OMFControlPlanetLab
|
|
14
|
|
|
15
|
The top-level node is always called 'OMF'. Underneath the OMF node is
|
|
16
|
a node called OMF/system node, which is used for testbed management
|
|
17
|
functions, and is not accessible via this XML-RPC interface. Alongside
|
|
18
|
the OMF/system node are any number of siblings, each of which
|
|
19
|
corresponds to a PlanetLab slice.
|
|
20
|
|
|
21
|
For instance, a slice named 'foo' will have a PubSub node called
|
|
22
|
'OMF/foo'.
|
|
23
|
|
|
24
|
All slices will have a PubSub child node named like
|
|
25
|
'OMF/<slice_name>/resources'. The children of
|
|
26
|
'OMF/<slice_name>/resources' are PubSub nodes that correspond to the
|
|
27
|
slivers or resources of the slice. Experiments executed on a slice
|
|
28
|
will generate their own PubSub nodes under
|
|
29
|
'OMF/<slice_name>/<experiment_name>'.
|
|
30
|
|
|
31
|
This XML-RPC interface allows for creating and removing the following
|
|
32
|
PubSub nodes:
|
|
33
|
|
|
34
|
- OMF/<slice_name>
|
|
35
|
- OMF/<slice_name>/resources
|
|
36
|
- OMF/<slice_name>/resources/<resource_name>
|
|
37
|
|
|
38
|
The 'OMF' and 'resources' components of these PubSub node names are
|
|
39
|
literal; the terms in angle brackets '<','>' are substituted with the
|
|
40
|
actual name of the slice and the resource.
|
|
41
|
|
|
42
|
NOTE: the PubSub node names are case sensitive.
|
|
43
|
|
|
44
|
NOTE: the API does not yet support authentication. Current proposal
|
|
45
|
is to handle SSL/TLS symmetric authentication using a reverse HTTP
|
|
46
|
proxy such as lighttpd.
|
|
47
|
|
|
48
|
The available XML-RPC interfaces are described below. They are
|
|
49
|
provided by the OMF Aggregate Manager, mounted on the /slicemgr URI.
|
|
50
|
|
|
51
|
|
|
52
|
|
|
53
|
slicemgr.createSlice(slice_name)
|
|
54
|
--------------------------------
|
|
55
|
|
|
56
|
IN:
|
|
57
|
slice_name -- string -- name of the slice to be created
|
|
58
|
|
|
59
|
Description: Creates the top-level PubSub nodes for a new slice. For
|
|
60
|
instance, if slice_name is 'foo', then the following two nodes will be
|
|
61
|
created:
|
|
62
|
|
|
63
|
- OMF/foo
|
|
64
|
- OMF/foo/resources
|
|
65
|
|
|
66
|
If either of these nodes already exist then the RPC succeeds as normal
|
|
67
|
(no indication is returned to the client that the node already
|
|
68
|
existed). If the slice_name is 'system' (or 'SYSTEM', or 'SYStem', or
|
|
69
|
'sYStem", etc.) then the RPC fails with fault code 1.
|
|
70
|
|
|
71
|
OUT:
|
|
72
|
struct
|
|
73
|
result => "OK" (if the call succeeded)
|
|
74
|
name => sliceid -- string -- e.g. "OMF/foo"
|
|
75
|
|
|
76
|
|
|
77
|
|
|
78
|
slicemgr.addResource(slice_name, resource_name)
|
|
79
|
-----------------------------------------------
|
|
80
|
|
|
81
|
IN:
|
|
82
|
slice_name -- string -- name of the slice
|
|
83
|
resource_name -- string -- name of the new resource
|
|
84
|
|
|
85
|
Description: Add a new resource under the slice with the given
|
|
86
|
slice_name. The slice should already have been created using
|
|
87
|
slicemgr.createSlice. If slice_name is 'foo' and resource_name is
|
|
88
|
'onelab10.inria.fr', then the following PubSub node will be created:
|
|
89
|
|
|
90
|
- OMF/foo/resources/onelab10.inria.fr
|
|
91
|
|
|
92
|
If the node already exists then the RPC succeeds as normal (no
|
|
93
|
indication is returned to the client that the node already existed).
|
|
94
|
If the slice_name is 'system' (or 'SYSTEM', or 'SYStem', etc.), then
|
|
95
|
the RPC fails with fault code 1.
|
|
96
|
|
|
97
|
OUT:
|
|
98
|
struct
|
|
99
|
result => "OK" (if the call succeeded)
|
|
100
|
slice => sliceid -- string -- e.g. "OMF/foo"
|
|
101
|
resource => resourceid -- string -- e.g. "OMF/foo/onelab10.inria.fr"
|
|
102
|
|
|
103
|
|
|
104
|
|
|
105
|
slicemgr.removeResource(slice_name, resource_name)
|
|
106
|
--------------------------------------------------
|
|
107
|
|
|
108
|
IN:
|
|
109
|
slice_name -- string -- name of the slice
|
|
110
|
resource_name -- string -- name of the resource
|
|
111
|
|
|
112
|
Description: Removes the resource called resource_name from the slice
|
|
113
|
called slice_name. If the slice_name is 'foo' and the resource name is
|
|
114
|
'onelab10.inria.fr', then the following PubSub node will be removed:
|
|
115
|
|
|
116
|
- OMF/foo/resources/onelab10.inria.fr
|
|
117
|
|
|
118
|
If this PubSub node does not exist then the call succeeds silently (no
|
|
119
|
indication is given to the client that the node did not exist
|
|
120
|
already). If the slice_name is 'system' (or 'SYSTEM', or 'SYStem',
|
|
121
|
etc.), then the RPC fails with fault code 1.
|
|
122
|
|
|
123
|
OUT:
|
|
124
|
struct
|
|
125
|
result => "OK" (if the call succeeded)
|
|
126
|
slice => sliceid -- string -- e.g. "OMF/foo"
|
|
127
|
resource => resourceid -- string -- e.g. "OMF/foo/onelab10.inria.fr"
|
|
128
|
|
|
129
|
|
|
130
|
|
|
131
|
slicemgr.deleteSlice(slice_name)
|
|
132
|
--------------------------------
|
|
133
|
|
|
134
|
IN:
|
|
135
|
slice_name -- string -- name of the slice to delete
|
|
136
|
|
|
137
|
Description: Deletes the slice called slice_name. If the slice_name
|
|
138
|
is 'foo' then the following PubSub nodes will be removed:
|
|
139
|
|
|
140
|
- OMF/foo
|
|
141
|
- OMF/foo/resources
|
|
142
|
- OMF/foo/resources/*
|
|
143
|
|
|
144
|
The wildcard "OMF/foo/resources/*" means that all PubSub nodes
|
|
145
|
corresponding to resources for slice 'foo' will also be removed by
|
|
146
|
this RPC.
|
|
147
|
|
|
148
|
If slice_name does not refer to an existing slice then this RPC
|
|
149
|
succeeds silently (no indication is given to the client that the node
|
|
150
|
did not exist already). If the slice_name is 'system' (or 'SYSTEM, or
|
|
151
|
'SYStem', etc.) then the RPC fails with fault code 1.
|
|
152
|
|
|
153
|
OUT:
|
|
154
|
struct
|
|
155
|
result => "OK" (if the call succeeded)
|
|
156
|
slice => sliceid -- string -- e.g. "OMF/foo"
|
|
157
|
resources => resource_list -- array -- an array of the
|
|
158
|
resource nodes removed.
|
|
159
|
|
|
160
|
|
|
161
|
|
|
162
|
NOTES:
|
|
163
|
------
|
|
164
|
|
|
165
|
1. This document describes the first prototype implementation of the
|
|
166
|
XML-RPC interface to the slice/resource creation functions. The fact that
|
|
167
|
error indications are not returned for attempts to add existing
|
|
168
|
slices/resources or remove non-existing slices/resources is an artefact of the
|
|
169
|
current implementation environment and should be rectified in a
|
|
170
|
subsequent revision.
|