HP BL680c XenEnterprise Management API - Page 7

Wire Protocol for Remote API Calls

Page 7 highlights

1.3. WIRE PROTOCOL FOR REMOTE API CALLS CHAPTER 1. INTRODUCTION 1.3 Wire Protocol for Remote API Calls API calls are sent over a network to a Xen-enabled host using the XML-RPC protocol. In this Section we describe how the higher-level types used in our API Reference are mapped to primitive XML-RPC types. In our API Reference we specify the signatures of API functions in the following style: (ref_vm Set) VM.get_all() This specifies that the function with name VM.get all takes no parameters and returns a Set of ref vms. These types are mapped onto XML-RPC types in a straight-forward manner: • Floats, Bools, DateTimes and Strings map directly to the XML-RPC double, boolean, dateTime.iso8601, and string elements. • all "ref " types are opaque references, encoded as the XML-RPC's String type. Users of the API should not make assumptions about the concrete form of these strings and should not expect them to remain valid after the client's session with the server has terminated. • fields named "uuid" of type "String" are mapped to the XML-RPC String type. The string itself is the OSF DCE UUID presentation format (as output by uuidgen, etc). • ints are all assumed to be 64-bit in our API and are encoded as a string of decimal digits (rather than using XML-RPC's built-in 32-bit i4 type). • values of enum types are encoded as strings. For example, a value of destroy of type on normal exit, would be conveyed as: destroy • for all our types, t, our type t Set simply maps to XML-RPC's Array type, so for example a value of type String Set would be transmitted like this: CX8 PSE36 FPU • for types k and v, our type (k, v) Map maps onto an XML-RPC struct, with the key as the name of the struct. Note that the (k, v) Map type is only valid when k is a String, Ref, or Int, and in each case the keys of the maps are stringified as above. For example, the (String, double) Map containing a the mappings Mike → 2.3 and John → 1.2 would be represented as: Mike 2.3 7

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76
  • 77
  • 78
  • 79
  • 80
  • 81
  • 82
  • 83
  • 84
  • 85
  • 86
  • 87
  • 88
  • 89
  • 90
  • 91
  • 92
  • 93
  • 94
  • 95
  • 96
  • 97
  • 98
  • 99
  • 100
  • 101
  • 102
  • 103
  • 104
  • 105
  • 106
  • 107
  • 108
  • 109
  • 110
  • 111
  • 112
  • 113
  • 114
  • 115
  • 116
  • 117
  • 118
  • 119
  • 120
  • 121
  • 122
  • 123
  • 124
  • 125
  • 126
  • 127
  • 128
  • 129
  • 130
  • 131
  • 132
  • 133
  • 134
  • 135
  • 136
  • 137
  • 138
  • 139
  • 140
  • 141
  • 142
  • 143
  • 144
  • 145
  • 146
  • 147
  • 148
  • 149
  • 150
  • 151
  • 152
  • 153
  • 154
  • 155
  • 156
  • 157
  • 158
  • 159
  • 160
  • 161
  • 162
  • 163
  • 164
  • 165
  • 166
  • 167
  • 168
  • 169
  • 170
  • 171
  • 172
  • 173
  • 174
  • 175
  • 176
  • 177
  • 178
  • 179
  • 180
  • 181
  • 182
  • 183
  • 184
  • 185
  • 186
  • 187
  • 188
  • 189
  • 190
  • 191
  • 192
  • 193
  • 194
  • 195
  • 196
  • 197
  • 198
  • 199
  • 200
  • 201
  • 202
  • 203
  • 204
  • 205
  • 206
  • 207
  • 208
  • 209
  • 210
  • 211
  • 212
  • 213
  • 214
  • 215
  • 216
  • 217
  • 218
  • 219
  • 220
  • 221
  • 222
  • 223
  • 224
  • 225
  • 226
  • 227
  • 228
  • 229
  • 230
  • 231
  • 232
  • 233
  • 234
  • 235
  • 236
  • 237
  • 238
  • 239
  • 240
  • 241
  • 242
  • 243
  • 244
  • 245
  • 246
  • 247
  • 248
  • 249
  • 250
  • 251
  • 252
  • 253
  • 254
  • 255
  • 256
  • 257
  • 258
  • 259
  • 260
  • 261
  • 262
  • 263
  • 264
  • 265
  • 266
  • 267
  • 268
  • 269
  • 270
  • 271
  • 272
  • 273
  • 274
  • 275
  • 276
  • 277
  • 278
  • 279
  • 280
  • 281
  • 282
  • 283
  • 284
  • 285
  • 286
  • 287
  • 288
  • 289
  • 290
  • 291
  • 292
  • 293
  • 294
  • 295
  • 296
  • 297
  • 298
  • 299
  • 300
  • 301
  • 302
  • 303
  • 304
  • 305
  • 306
  • 307
  • 308
  • 309
  • 310
  • 311
  • 312
  • 313

1.3. WIRE PROTOCOL FOR REMOTE API CALLS
CHAPTER 1. INTRODUCTION
1.3
Wire Protocol for Remote API Calls
API calls are sent over a network to a Xen-enabled host using the XML-RPC protocol. In this
Section we describe how the higher-level types used in our API Reference are mapped to primitive
XML-RPC types.
In our API Reference we specify the signatures of API functions in the following style:
(ref_vm Set)
VM.get_all()
This specifies that the function with name
VM.get
all
takes no parameters and returns a Set of
ref
vm
s. These types are mapped onto XML-RPC types in a straight-forward manner:
Floats, Bools, DateTimes and Strings map directly to the XML-RPC
double
,
boolean
,
dateTime.iso8601
, and
string
elements.
all “
ref
” types are opaque references, encoded as the XML-RPC’s
String
type. Users of
the API should not make assumptions about the concrete form of these strings and should
not expect them to remain valid after the client’s session with the server has terminated.
fields named “
uuid
” of type “
String
” are mapped to the XML-RPC
String
type.
The
string itself is the OSF DCE UUID presentation format (as output by
uuidgen
, etc).
ints are all assumed to be 64-bit in our API and are encoded as a string of decimal digits
(rather than using XML-RPC’s built-in 32-bit
i4
type).
values of enum types are encoded as strings.
For example, a value of
destroy
of type
on
normal
exit
, would be conveyed as:
<value><string>destroy</string></value>
for all our types,
t
, our type
t Set
simply maps to XML-RPC’s
Array
type, so for example
a value of type
String Set
would be transmitted like this:
<array>
<data>
<value><string>CX8</string></value>
<value><string>PSE36</string></value>
<value><string>FPU</string></value>
</data>
</array>
for types
k
and
v
, our type
(k, v) Map
maps onto an XML-RPC struct, with the key as
the name of the struct. Note that the
(k, v) Map
type is only valid when
k
is a
String
,
Ref
, or
Int
, and in each case the keys of the maps are stringified as above. For example,
the
(String, double) Map
containing a the mappings Mike
2.3 and John
1.2 would
be represented as:
<value>
<struct>
<member>
<name>Mike</name>
<value><double>2.3</double></value>
</member>
<member>
7