Revision 45e274fc docs/cyclades-api-guide.rst

b/docs/cyclades-api-guide.rst
90 90
`Delete <#delete-server>`_                          ``/servers/<server id>``                  DELETE ✔        ✔
91 91
`List Addresses <#list-server-addresses>`_          ``/servers/<server id>/ips``              GET    ✔        ✔
92 92
`Get NICs by Net <#get-server-nics-by-network>`_    ``/servers/<server id>/ips/<network id>`` GET    ✔        ✔
93
`List Metadata <#list-server-metadata>`_            ``/servers/<server-id>/meta``             GET    ✔        **✘**
94
\                                                   ``/servers/<server-id>/metadata``         GET    **✘**    ✔
95
`Update Metadata <#set-update-server-metadata>`_    ``/servers/<server-id>/meta``             POST    ✔       **✘**
96
\                                                   ``/servers/<server-id>/metadata``         PUT    **✘**    ✔
97
\                                                   ``/servers/<server-id>/metadata``         POST   **✘**    ✔
98
`Get Meta Item <#get-server-metadata-item>`_        ``/servers/<server-id>/meta/<key>``       GET    ✔        **✘**
99
\                                                   ``/servers/<server-id>/metadata/<key>``   GET    **✘**    ✔
100
`Update Meta Item <#update-server-metadatum-item>`_ ``/servers/<server-id>/meta/<key>``       PUT    ✔        **✘**
101
\                                                   ``/servers/<server-id>/metadata/<key>``   PUT    **✘**    ✔
102
`Delete Meta Item <#delete-server-metadatum>`_      ``/servers/<server-id>/meta/<key>``       DELETE ✔        **✘**
103
\                                                   ``/servers/<server-id>/metadata/<key>``   DELETE **✘**    ✔
93
`List Metadata <#list-server-metadata>`_            ``/servers/<server-id>/metadata``         GET    ✔        ✔
94
`Update Metadata <#set-update-server-metadata>`_    ``/servers/<server-id>/metadata``         PUT    **✘**    ✔
95
\                                                   ``/servers/<server-id>/metadata``         POST   ✔        ✔
96
`Get Meta Item <#get-server-metadata-item>`_        ``/servers/<server-id>/metadata/<key>``   GET    ✔        ✔
97
`Update Meta Item <#update-server-metadatum-item>`_ ``/servers/<server-id>/metadata/<key>``   PUT    ✔        ✔
98
`Delete Meta Item <#delete-server-metadatum>`_      ``/servers/<server-id>/metadata/<key>``   DELETE ✔        ✔
104 99
=================================================== ========================================= ====== ======== ==========
105 100

  
106 101
List Servers
......
188 183
hostId            Server playground      empty    ✔
189 184
created           Creation date          ✔        ✔
190 185
updated           Creation date          ✔        ✔
191
flavorRef         The flavor id          ✔        **✘**
192
flavor            The flavor id          **✘**    ✔
193
imageRef          The image id           ✔        **✘**
194
image             The image id           **✘**    ✔
186
flavor            The flavor id          ✔        ✔
187
image             The image id           ✔        ✔
195 188
progress          Build progress         ✔        ✔
196 189
status            Server status          ✔        ✔
197 190
attachments       Network interfaces     ✔        **✘**
......
228 221
.. code-block:: javascript
229 222

  
230 223
  {
231
    "servers":
232
      {"values": [
233
        {
234
          "attachments": {
235
            "values": [
236
              {
237
                "id": "nic-42-0",
238
                "network_id": "101",
239
                "mac_address": "aa:00:00:49:2e:7e",
240
                "firewallProfile": "DISABLED",
241
                "ipv4": "192.168.4.5",
242
                "ipv6": "2001:648:2ffc:1222:a800:ff:fef5:3f5b"
243
              }
244
            ]
245
          },
246
          "created': '2011-04-19T10:18:52.085737+00:00',
247
          "flavorRef": "1",
248
          "hostId": "",
249
          "id": "42",
250
          "imageRef": "3",
251
          "metadata": {"values": {"foo": "bar"}},
252
          "name": "My Server",
253
          "status": "ACTIVE",
254
          "updated": "2011-05-29T14:07:07.037602+00:00"
255
        }, {
256
          "attachments": {
257
            "values": [
258
              {
259
                "id": "nic-43-0",
260
                "mac_address": "aa:00:00:91:2f:df",
261
                "network_id": "1",
262
                "ipv4": "192.168.32.2"
263
              }, {
264
                "id": "nic-43-1",
265
                "network_id": "101",
266
                "mac_address": "aa:00:00:49:2g:7f",
267
                "firewallProfile": "DISABLED",
268
                "ipv4": "192.168.32.6",
269
                "ipv6": "2001:648:2ffc:1222:a800:ff:fef5:3f5c'
270
              }, {
271
                "id": "nic-43-2",
272
                "network_id": "101",
273
                "mac_address": "aa:00:00:51:2h:7f",
274
                "firewallProfile": "DISABLED",
275
                "ipv4": "192.168.32.7",
276
                "ipv6": "2001:638:2eec:1222:a800:ff:fef5:3f5c"
277
              }
278
            ]
279
          },
280
          "created": "2011-05-02T20:51:08.527759+00:00",
281
          "flavorRef": "1",
282
          "hostId": "",
283
          "id": "43",
284
          "imageRef": "3",
285
          "name": "Other Server",
286
          "description": "A sample server to showcase server requests",
287
          "progress": "0",
288
          "status": "ACTIVE",
289
          "updated": "2011-05-29T14:59:11.267087+00:00"
290
        }
291
      ]
292
    }
224
    "servers": [
225
      {
226
        "attachments": [
227
            {
228
              "id": "nic-42-0",
229
              "network_id": "101",
230
              "mac_address": "aa:00:00:49:2e:7e",
231
              "firewallProfile": "DISABLED",
232
              "ipv4": "192.168.4.5",
233
              "ipv6": "2001:648:2ffc:1222:a800:ff:fef5:3f5b"
234
            }
235
        ],
236
        "created': '2011-04-19T10:18:52.085737+00:00',
237
        "flavorRef": "1",
238
        "hostId": "",
239
        "id": "42",
240
        "imageRef": "3",
241
        "metadata": {{"foo": "bar"},
242
        "name": "My Server",
243
        "status": "ACTIVE",
244
        "updated": "2011-05-29T14:07:07.037602+00:00"
245
      }, {
246
        "attachments": [
247
            {
248
              "id": "nic-43-0",
249
              "mac_address": "aa:00:00:91:2f:df",
250
              "network_id": "1",
251
              "ipv4": "192.168.32.2"
252
            }, {
253
              "id": "nic-43-1",
254
              "network_id": "101",
255
              "mac_address": "aa:00:00:49:2g:7f",
256
              "firewallProfile": "DISABLED",
257
              "ipv4": "192.168.32.6",
258
              "ipv6": "2001:648:2ffc:1222:a800:ff:fef5:3f5c'
259
            }, {
260
              "id": "nic-43-2",
261
              "network_id": "101",
262
              "mac_address": "aa:00:00:51:2h:7f",
263
              "firewallProfile": "DISABLED",
264
              "ipv4": "192.168.32.7",
265
              "ipv6": "2001:638:2eec:1222:a800:ff:fef5:3f5c"
266
            }
267
        ],
268
        "created": "2011-05-02T20:51:08.527759+00:00",
269
        "flavorRef": "1",
270
        "hostId": "",
271
        "id": "43",
272
        "imageRef": "3",
273
        "name": "Other Server",
274
        "description": "A sample server to showcase server requests",
275
        "progress": "0",
276
        "status": "ACTIVE",
277
        "updated": "2011-05-29T14:59:11.267087+00:00"
278
      }
279
    ]
293 280
  }
294 281

  
295 282

  
......
405 392
        }
406 393
      ],
407 394
      "metadata": {
408
        "values": {
409
          "EloquentDescription": "Example server with personality",
410
          "ShortDescription": "Trying VMs"
411
        }
395
        "EloquentDescription": "Example server with personality",
396
        "ShortDescription": "Trying VMs"
412 397
      }
413 398
    }
414 399
  }
......
461 446
      "suspended": false,
462 447
      "progress": 0
463 448
      "metadata": {
464
        "values": {
465
          "EloquentDescription": "Example server with personality",
466
          "ShortDescription": "Trying VMs"
467
        }
449
        "EloquentDescription": "Example server with personality",
450
        "ShortDescription": "Trying VMs"
468 451
      }
469 452
    }
470 453
  }
......
750 733
hostId            Server playground      empty    ✔
751 734
created           Creation date          ✔        ✔
752 735
updated           Creation date          ✔        ✔
753
flavorRef         The flavor id          ✔        **✘**
754
flavor            The flavor id          **✘**    ✔
755
imageRef          The image id           ✔        **✘**
756
image             The image id           **✘**    ✔
736
flavor            The flavor id          ✔        ✔
737
image             The image id           ✔        ✔
757 738
progress          Build progress         ✔        ✔
758 739
status            Server status          ✔        ✔
759 740
suspended         If server is suspended ✔        **✘**
......
799 780
      "imageRef": "926a1bc5-2d85-49d4-aebe-0fc127ed89b9",
800 781
      "created": "2013-04-18T10:06:58.288273+00:00",
801 782
      "flavorRef": 22,
802
      "attachments": {
803
        "values": [{
783
      "attachments": [
784
        {
804 785
          "network_id": "1888",
805 786
          "mac_address": "aa:0c:f5:ad:16:41",
806 787
          "firewallProfile": "DISABLED",
807 788
          "ipv4": "83.212.112.56",
808 789
          "ipv6": "2001:648:2ffc:1119:a80c:f5ff:fead:1641",
809 790
          "id": "nic-42042-0"
810
        }]
811
      },
791
        }
792
      ],
812 793
      "suspended": false,
813
      "diagnostics": [{
814
        "level": "DEBUG",
815
        "created": "2013-04-18T10:09:52.776920+00:00",
816
        "source": "image-info",
817
        "source_date": "2013-04-18T10:09:52.709791+00:00",
818
        "message": "Image customization finished successfully.",
819
        "details": null
820
      }],
794
      "diagnostics": [
795
        {
796
          "level": "DEBUG",
797
          "created": "2013-04-18T10:09:52.776920+00:00",
798
          "source": "image-info",
799
          "source_date": "2013-04-18T10:09:52.709791+00:00",
800
          "message": "Image customization finished successfully.",
801
          "details": null
802
        }
803
      ],
821 804
      "progress": 100,
822 805
      "metadata": {
823
        "values": {"OS": "windows", "users": "Administrator"}
806
        "OS": "windows",
807
        "users": "Administrator"
824 808
      }
825 809
    }
826 810
  }
827 811

  
828
.. note:: the ``values`` layer is not featured in OS/Compute API
829

  
830 812
Rename Server
831 813
.............
832 814

  
......
1003 985

  
1004 986
Response body contents::
1005 987

  
1006
  addresses: {values: [
988
  addresses: [
1007 989
    {
1008 990
      <NIC attribute>: <value>,
1009 991
      ...
1010 992
    },
1011 993
    ...
1012
  ]}
994
  ]
1013 995

  
1014 996
A Network Interface Connection (or NIC) connects the current server to a
1015 997
network, through their respective identifiers. More information in NIC
......
1020 1002
.. code-block:: javascript
1021 1003

  
1022 1004
  {
1023
    "addresses": {
1024
      "values": [
1025
        {
1026
          "id": "nic-25455-0"
1027
          "network_id": "1",
1028
          "mac_address": "aa:00:03:7a:84:bb",
1029
          "firewallProfile": "DISABLED",
1030
          "ipv4": "192.168.0.27",
1031
          "ipv6": "2001:646:2ffc:1222:a820:3fd:fe7a:84bb",
1032
        }, {
1033
          "id": "nic-25455-1"
1034
          "network_id": "7",
1035
          "mac_address": "aa:00:03:7a:84:cc",
1036
          "firewallProfile": "DISABLED",
1037
          "ipv4": "192.168.0.28",
1038
          "ipv6": "2002:646:2fec:1222:a820:3fd:fe7a:84bc",
1039
        },
1040
      ]
1041
    }
1005
    "addresses": [
1006
      {
1007
        "id": "nic-25455-0"
1008
        "network_id": "1",
1009
        "mac_address": "aa:00:03:7a:84:bb",
1010
        "firewallProfile": "DISABLED",
1011
        "ipv4": "192.168.0.27",
1012
        "ipv6": "2001:646:2ffc:1222:a820:3fd:fe7a:84bb",
1013
      }, {
1014
        "id": "nic-25455-1"
1015
        "network_id": "7",
1016
        "mac_address": "aa:00:03:7a:84:cc",
1017
        "firewallProfile": "DISABLED",
1018
        "ipv4": "192.168.0.28",
1019
        "ipv6": "2002:646:2fec:1222:a820:3fd:fe7a:84bc",
1020
      },
1021
    ]
1042 1022
  }
1043 1023

  
1044 1024
Get Server NICs by Network
......
1129 1109
================================= ====== ======== ==========
1130 1110
URI                               Method Cyclades OS/Compute
1131 1111
================================= ====== ======== ==========
1132
``/servers/<server-id>/meta``     GET    ✔        **✘**
1133
``/servers/<server-id>/metadata`` GET    **✘**    ✔
1112
``/servers/<server-id>/metadata`` GET    ✔        ✔
1134 1113
================================= ====== ======== ==========
1135 1114

  
1136 1115
* **server-id** is the identifier of the virtual server
......
1164 1143

  
1165 1144
Response body contents::
1166 1145

  
1167
  metadata: {values:
1168
    {
1169
      <metadatum key>: <value>,
1146
  metadata: {
1147
    <key>: <value>,
1170 1148
      ...
1171
    }
1172 1149
  }
1173 1150

  
1174 1151
*Example List Server Metadata: JSON*
......
1177 1154

  
1178 1155
  {
1179 1156
    ""metadata": {
1180
      "values": {
1181
        "OS": "Linux",
1182
        "users": "root"
1183
      }
1157
      "OS": "Linux",
1158
      "users": "root"
1184 1159
    }
1185 1160
  }
1186 1161

  
1187
.. note:: In OS/Compute API  the ``values`` level is missing from the response.
1188

  
1189 1162
Set / Update Server Metadata
1190 1163
............................
1191 1164

  
......
1205 1178
================================= ====== ======== ==========
1206 1179
URI                               Method Cyclades OS/Compute
1207 1180
================================= ====== ======== ==========
1208
``/servers/<server-id>/meta``     POST    ✔       **✘**
1209 1181
``/servers/<server-id>/metadata`` PUT    **✘**    ✔
1210
``/servers/<server-id>/metadata`` POST   **✘**
1182
``/servers/<server-id>/metadata`` POST   
1211 1183
================================= ====== ======== ==========
1212 1184

  
1213 1185
* **server-id** is the identifier of the virtual server
......
1233 1205
Request body contents::
1234 1206

  
1235 1207
  metadata: {
1236
    <metadatum key>: <value>,
1208
    <key>: <value>,
1237 1209
    ...
1238 1210
  }
1239 1211

  
......
1262 1234
Response body contents::
1263 1235

  
1264 1236
  metadata: {
1265
    <metadatum key>: <value>,
1237
    <key>: <value>,
1266 1238
    ...
1267 1239
  }
1268 1240

  
......
1275 1247
Get Server Metadata Item
1276 1248
........................
1277 1249

  
1278
Get the value of a specific metadatum of a virtual server
1279

  
1280
.. note:: This operation is semantically equivalent in Cyclades and OS/Compute
1281
  besides the different URI.
1250
Get the value of a specific piece of metadata of a virtual server
1282 1251

  
1283 1252
.. rubric:: Request
1284 1253

  
1285 1254
======================================= ====== ======== ==========
1286 1255
URI                                     Method Cyclades OS/Compute
1287 1256
======================================= ====== ======== ==========
1288
``/servers/<server-id>/meta/<key>``     GET    ✔        **✘**
1289
``/servers/<server-id>/metadata/<key>`` GET    **✘**    ✔
1257
``/servers/<server-id>/metadata/<key>`` GET    ✔        ✔
1290 1258
======================================= ====== ======== ==========
1291 1259

  
1292 1260
* **server-id** is the identifier of the virtual server
......
1322 1290

  
1323 1291
Response body content::
1324 1292

  
1325
  metadata: {<metadatum key>: <value>}
1293
  metadata: {<key>: <value>}
1326 1294

  
1327 1295
*Example Get Server Metadatum for Item 'role', JSON*
1328 1296

  
......
1330 1298

  
1331 1299
  {"metadata": {"role": "webmail"}}
1332 1300

  
1333
.. note:: In OS/Compute, ``metadata`` is ``meta``
1334

  
1335 1301
Update Server Metadatum Item
1336 1302
.............................
1337 1303

  
1338 1304
Set a new or update an existing a metadum value for a virtual server.
1339 1305

  
1340
.. note:: This operation is semantically equivalent in Cyclades and OS/Compute
1341
  besides the different URI.
1342

  
1343 1306
.. rubric:: Request
1344 1307

  
1345 1308
======================================= ====== ======== ==========
1346 1309
URI                                     Method Cyclades OS/Compute
1347 1310
======================================= ====== ======== ==========
1348
``/servers/<server-id>/meta/<key>``     PUT    ✔        **✘**
1349
``/servers/<server-id>/metadata/<key>`` PUT    **✘**    ✔
1311
``/servers/<server-id>/metadata/<key>`` PUT    ✔        ✔
1350 1312
======================================= ====== ======== ==========
1351 1313

  
1352 1314
* **server-id** is the identifier of the virtual server
1353 1315

  
1354
* **key** is the key of a matadatum ``key``:``value`` pair
1316
* **key** is the key of a ``key``:``value`` pair piece of metadata
1355 1317

  
1356 1318
|
1357 1319

  
......
1373 1335

  
1374 1336
Request body content::
1375 1337

  
1376
  meta: {<metadatum key>: <value>}
1338
  metadata: {<key>: <value>}
1377 1339

  
1378 1340
*Example Request to Set or Update Server Metadatum "role": JSON*
1379 1341

  
1380 1342
.. code-block:: javascript
1381 1343

  
1382
  {"meta": {"role": "gateway"}}
1344
  {"metadata": {"role": "gateway"}}
1383 1345

  
1384 1346
.. rubric:: Response
1385 1347

  
......
1399 1361

  
1400 1362
Response body content::
1401 1363

  
1402
  meta: {<metadatum key>: <value>}
1364
  metadata: {<key>: <value>}
1403 1365

  
1404 1366
*Example Set or Update Server Metadatum "role":"gateway": JSON*
1405 1367

  
1406 1368
.. code-block:: javascript
1407 1369

  
1408
  {"meta": {"role": "gateway"}}
1370
  {"metadata": {"role": "gateway"}}
1409 1371

  
1410 1372
Delete Server Metadatum
1411 1373
.......................
1412 1374

  
1413 1375
Delete a metadatum of a virtual server
1414 1376

  
1415
.. note:: This operation is semantically equivalent in Cyclades and OS/Compute
1416
  besides the different URI.
1417

  
1418 1377
.. rubric:: Request
1419 1378

  
1420 1379
======================================= ====== ======== ==========
1421 1380
URI                                     Method Cyclades OS/Compute
1422 1381
======================================= ====== ======== ==========
1423
``/servers/<server-id>/meta/<key>``     DELETE ✔        **✘**
1424
``/servers/<server-id>/metadata/<key>`` DELETE **✘**    ✔
1382
``/servers/<server-id>/metadata/<key>`` DELETE ✔        ✔
1425 1383
======================================= ====== ======== ==========
1426 1384

  
1427 1385
* **server-id** is the identifier of the virtual server
......
1693 1651
URI                 Method Cyclades OS/Compute
1694 1652
=================== ====== ======== ==========
1695 1653
``/flavors``        GET    ✔        ✔
1696
``/flavors/detail`` GET    ✔        **✘**
1654
``/flavors/detail`` GET    ✔        
1697 1655
=================== ====== ======== ==========
1698 1656

  
1699
* The detailed (``/flavors/detail``) listing in Cyclades is semantically
1700
  similar to OS/Compute regular (``/flavor``) listing. The Cyclades regular
1701
  listing semantics are Cyclades specific.
1702

  
1703 1657
|
1704 1658

  
1705 1659
==============  ========================= ======== ==========
......
1735 1689

  
1736 1690
Response code contents::
1737 1691

  
1738
  flavors: {values[
1692
  flavors: [
1739 1693
    {
1740 1694
      <flavor attribute>: <value>,
1741 1695
      ...
1742 1696
    },
1743 1697
    ...
1744
  ]}
1698
  ]
1745 1699

  
1746 1700
Flavor attributes are `listed here <#flavor-ref>`_. Regular listing contains
1747 1701
only ``id`` and ``name`` attributes.
......
1751 1705
.. code-block:: javascript
1752 1706

  
1753 1707
  {
1754
    "flavors": {
1755
      "values": [
1756
        {
1757
          "id": 1,
1758
          "name": "One code",
1759
        }, {
1760
          "id": 3,
1761
          "name": "Four core",
1762
        }
1763
      ]
1764
    }
1708
    "flavors": [
1709
      {
1710
        "id": 1,
1711
        "name": "One code",
1712
      }, {
1713
        "id": 3,
1714
        "name": "Four core",
1715
      }
1716
    ]
1765 1717
  }
1766 1718

  
1767 1719

  
......
1781 1733
.. code-block:: javascript
1782 1734

  
1783 1735
  {
1784
    "flavors": {
1785
      "values": [
1786
        {
1787
          "id": 1,
1788
          "name": "One core",
1789
          "ram": 1024,
1790
          "SNF:disk_template": "drbd",
1791
          "disk": 20,
1792
          "cpu": 1
1793
        }, {
1794
          "id": 3,
1795
          "name": "Four core",
1796
          "ram": 1024,
1797
          "SNF:disk_template": "drbd",
1798
          "disk": 40,
1799
          "cpu": 4
1800
        }
1801
      ]
1802
    }
1736
    "flavors": [
1737
      {
1738
        "id": 1,
1739
        "name": "One core",
1740
        "ram": 1024,
1741
        "SNF:disk_template": "drbd",
1742
        "disk": 20,
1743
        "cpu": 1
1744
      }, {
1745
        "id": 3,
1746
        "name": "Four core",
1747
        "ram": 1024,
1748
        "SNF:disk_template": "drbd",
1749
        "disk": 40,
1750
        "cpu": 4
1751
      }
1752
    ]
1803 1753
  }
1804 1754

  
1805
.. note:: In Compute OS API, the ``values`` layer is missing from the response
1806

  
1807 1755
Get Flavor Details
1808 1756
..................
1809 1757

  
......
1902 1850
\                                             ``/images/detail``                    GET    ✔        ✔
1903 1851
`Get details <#get-image-details>`_           ``/images/<image-id>``                GET    ✔        ✔
1904 1852
`Delete <#delete-image>`_                     ``/images/<image id>``                DELETE ✔        ✔
1905
`List Metadata <#list-image-metadata>`_       ``/images/<image-id>/meta``           GET    ✔        **✘**
1906
\                                             ``/images/<image-id>/metadata``       GET    **✘**    ✔
1907
`Update Metadata <#update-image-metadata>`_   ``/images/<image-id>/meta``           POST    ✔       **✘**
1853
`List Metadata <#list-image-metadata>`_       ``/images/<image-id>/metadata``       GET    ✔        ✔
1854
`Update Metadata <#update-image-metadata>`_   ``/images/<image-id>/metadata``       POST   ✔        ✔
1908 1855
\                                             ``/images/<image-id>/metadata``       PUT    **✘**    ✔
1909
\                                             ``/images/<image-id>/metadata``       POST   **✘**    ✔
1910
`Get Meta Item <#get-image-metadatum>`_       ``/image/<image-id>/meta/<key>``      GET    ✔        **✘**
1911
\                                             ``/images/<image-id>/metadata/<key>`` GET    **✘**    ✔
1912
`Update Metadatum <#update-image-metadatum>`_ ``/images/<image-id>/meta/<key>``     PUT    ✔        **✘**
1913
\                                             ``/images/<image-id>/metadata/<key>`` PUT    **✘**    ✔
1914
`Delete Metadatum <#delete-image-metadatum>`_ ``/images/<image-id>/meta/<key>``     DELETE ✔        **✘**
1915
\                                             ``/images/<image-id>/metadata/<key>`` DELETE **✘**    ✔
1856
`Get Meta Item <#get-image-metadatum>`_       ``/image/<image-id>/metadata/<key>``  GET    ✔        ✔
1857
`Update Metadatum <#update-image-metadatum>`_ ``/images/<image-id>/metadata/<key>`` PUT    ✔        ✔
1858
`Delete Metadatum <#delete-image-metadatum>`_ ``/images/<image-id>/metadata/<key>`` DELETE ✔        ✔
1916 1859
============================================= ===================================== ====== ======== ==========
1917 1860

  
1918 1861

  
......
1976 1919

  
1977 1920
Response body contents::
1978 1921

  
1979
  images: {values: [
1922
  images: [
1980 1923
    {
1981 1924
      <image attribute>: <value>,
1982 1925
      ...
1983
      metadata: {values: {
1926
      metadata: {
1984 1927
        <image metadatum key>: <value>,
1985 1928
        ...
1986
      }},
1929
      },
1987 1930
      ...
1988 1931
    },
1989 1932
    ...
1990
  ]}
1933
  ]
1991 1934

  
1992
The regular response returns just ``id`` and ``name``, while the detail returns a collections of the `image attributes listed here <#image-ref>`_.
1935
The regular response returns just ``id`` and ``name``, while the detail returns
1936
a collections of the `image attributes listed here <#image-ref>`_.
1993 1937

  
1994 1938
*Example List Image (detail): JSON*
1995 1939

  
1996 1940
.. code-block:: javascript
1997 1941

  
1998 1942
  {
1999
    "images: {
2000
      "values": [
2001
        {
2002
          "status": "ACTIVE",
2003
          "updated": "2013-03-02T15:57:03+00:00",
2004
          "name": "edx_saas",
2005
          "created": "2013-03-02T12:21:00+00:00",
2006
          "progress": 100,
2007
          "id": "175716...526236",
2008
          "metadata": {
2009
            "values": {
2010
              "partition_table": "msdos",
2011
              "osfamily": "linux",
2012
              "users": "root saasbook",
2013
              "exclude_task_changepassword": "yes",
2014
              "os": "ubuntu",
2015
              "root_partition": "1",
2016
              "description": "Ubuntu 12.04 LTS"
2017
            }
2018
          }
2019
        }, {
2020
          "status": "ACTIVE",
2021
          "updated": "2013-03-02T15:57:03+00:00",
2022
          "name": "edx_saas",
2023
          "created": "2013-03-02T12:21:00+00:00",
2024
          "progress": 100,
2025
          "id": "1357163d...c526206",
2026
          "metadata": {
2027
            "values": {
2028
              "partition_table": "msdos",
2029
              "osfamily": "windows",
2030
              "users": "Administratior",
2031
              "exclude_task_changepassword": "yes",
2032
              "os": "WinME",
2033
              "root_partition": "1",
2034
              "description": "Rerto Windows"
2035
            }
2036
          }
1943
    "images: [
1944
      {
1945
        "status": "ACTIVE",
1946
        "updated": "2013-03-02T15:57:03+00:00",
1947
        "name": "edx_saas",
1948
        "created": "2013-03-02T12:21:00+00:00",
1949
        "progress": 100,
1950
        "id": "175716...526236",
1951
        "metadata": {
1952
          "partition_table": "msdos",
1953
          "osfamily": "linux",
1954
          "users": "root saasbook",
1955
          "exclude_task_changepassword": "yes",
1956
          "os": "ubuntu",
1957
          "root_partition": "1",
1958
          "description": "Ubuntu 12.04 LTS"
2037 1959
        }
2038
      ]
2039
    }
1960
      }, {
1961
        "status": "ACTIVE",
1962
        "updated": "2013-03-02T15:57:03+00:00",
1963
        "name": "edx_saas",
1964
        "created": "2013-03-02T12:21:00+00:00",
1965
        "progress": 100,
1966
        "id": "1357163d...c526206",
1967
        "metadata": {
1968
          "partition_table": "msdos",
1969
          "osfamily": "windows",
1970
          "users": "Administratior",
1971
          "exclude_task_changepassword": "yes",
1972
          "os": "WinME",
1973
          "root_partition": "1",
1974
          "description": "Rerto Windows"
1975
        }
1976
      }
1977
    ]
2040 1978
  }
2041 1979

  
2042
.. note:: In Compute OS API, the ``values`` layer is missing from the response
2043

  
2044 1980
Get Image Details
2045 1981
.................
2046 1982

  
......
2089 2025
  image: {
2090 2026
    <image attribute>: <value>,
2091 2027
    ...
2092
    metadata: {values:{
2028
    metadata: {
2093 2029
      <image metadatum key>: <value>
2094
    }}
2030
    }
2095 2031
  }
2096 2032

  
2097 2033
Image attributes are `listed here <#image-ref>`_.
......
2100 2036

  
2101 2037
.. code-block:: javascript
2102 2038

  
2103
    {
2104
    "image": {
2105
      "id": "6404619d-...-aef57eaff4af",
2106
      "name": "FreeBSD",
2107
      "status": "ACTIVE",
2108
      "updated": "2013-04-24T12:06:02+00:00",
2109
      "created": "2013-04-24T11:52:16+00:00",
2110
      "progress": 100,
2111
      "metadata": {
2112
        "values": {
2113
          "kernel": "9.1 RELEASE",
2114
          "osfamily": "freebsd",
2115
          "users": "root",
2116
          "gui": "No GUI",
2117
          "sortorder": "9",
2118
          "os": "freebsd",
2119
          "root_partition": "2",
2120
          "description": "FreeBSD 9"
2121
        }
2039
  {
2040
  "image": {
2041
    "id": "6404619d-...-aef57eaff4af",
2042
    "name": "FreeBSD",
2043
    "status": "ACTIVE",
2044
    "updated": "2013-04-24T12:06:02+00:00",
2045
    "created": "2013-04-24T11:52:16+00:00",
2046
    "progress": 100,
2047
    "metadata": {
2048
      "kernel": "9.1 RELEASE",
2049
      "osfamily": "freebsd",
2050
      "users": "root",
2051
      "gui": "No GUI",
2052
      "sortorder": "9",
2053
      "os": "freebsd",
2054
      "root_partition": "2",
2055
      "description": "FreeBSD 9"
2122 2056
      }
2123 2057
    }
2124 2058
  }
2125 2059

  
2126
.. note:: In OS/Compute API, the ``values`` layer is missing.
2127

  
2128 2060

  
2129 2061
Delete Image
2130 2062
............
......
2173 2105
List Image Metadata
2174 2106
...................
2175 2107

  
2176
.. note:: This operation is semantically equivalent in Cyclades and OS/Compute
2177
  besides the different URI.
2178

  
2179 2108
.. rubric:: Request
2180 2109

  
2181 2110
=============================== ====== ======== ==========
2182 2111
URI                             Method Cyclades OS/Compute
2183 2112
=============================== ====== ======== ==========
2184
``/images/<image-id>/meta``     GET    ✔        **✘**
2185
``/images/<image-id>/metadata`` GET    **✘**    ✔
2113
``/images/<image-id>/metadata`` GET    ✔        ✔
2186 2114
=============================== ====== ======== ==========
2187 2115

  
2188 2116
* **image-id** is the identifier of the virtual image
......
2218 2146
Response body content::
2219 2147

  
2220 2148
  metadata: {
2221
    values: {
2222
      <metadatum key>: <value>,
2223
    ...
2224
    }
2149
    <metadatum key>: <value>,
2150
  ...
2225 2151
  }
2226 2152

  
2227 2153
*Example List Image Metadata: JSON*
......
2230 2156

  
2231 2157
  {
2232 2158
    "metadata": {
2233
      "values": {
2234
        "partition_table": "msdos",
2235
        "kernel": "3.2.0",
2236
        "osfamily": "linux",
2237
        "users": "user",
2238
        "gui": "Unity 5",
2239
        "sortorder": "3",
2240
        "os": "ubuntu",
2241
        "root_partition": "1",
2242
        "description": "Ubuntu 12 LTS"
2243
      }
2159
      "partition_table": "msdos",
2160
      "kernel": "3.2.0",
2161
      "osfamily": "linux",
2162
      "users": "user",
2163
      "gui": "Unity 5",
2164
      "sortorder": "3",
2165
      "os": "ubuntu",
2166
      "root_partition": "1",
2167
      "description": "Ubuntu 12 LTS"
2244 2168
    }
2245 2169
  }
2246 2170

  
......
2265 2189
=============================== ====== ======== ==========
2266 2190
URI                             Method Cyclades OS/Compute
2267 2191
=============================== ====== ======== ==========
2268
``/images/<image-id>/meta``     POST    ✔       **✘**
2269 2192
``/images/<image-id>/metadata`` PUT    **✘**    ✔
2270
``/images/<image-id>/metadata`` POST   **✘**
2193
``/images/<image-id>/metadata`` POST   
2271 2194
=============================== ====== ======== ==========
2272 2195

  
2273 2196
* **image-id** is the identifier of the virtual image
......
2322 2245
Response body content::
2323 2246

  
2324 2247
  metadata: {
2325
    <metadatum key>: <value>,
2248
    <key>: <value>,
2326 2249
    ...
2327 2250
  }
2328 2251

  
......
2348 2271
Get Image Metadatum
2349 2272
...................
2350 2273

  
2351
.. note:: This operation is semantically equivalent in Cyclades and OS/Compute
2352
  besides the different URI.
2353

  
2354 2274
.. rubric:: Request
2355 2275

  
2356 2276
===================================== ====== ======== ==========
2357 2277
URI                                   Method Cyclades OS/Compute
2358 2278
===================================== ====== ======== ==========
2359
``/image/<image-id>/meta/<key>``      GET    ✔        **✘**
2360
``/images/<image-id>/metadata/<key>`` GET    **✘**    ✔
2279
``/images/<image-id>/metadata/<key>`` GET    ✔        ✔
2361 2280
===================================== ====== ======== ==========
2362 2281

  
2363 2282
* **image-id** is the identifier of the image
......
2393 2312

  
2394 2313
Response body content::
2395 2314

  
2396
  metadata: {<metadatum key>: <value>}
2315
  metadata: {<key>: <value>}
2397 2316

  
2398 2317
*Example Get Image Metadatum Item: JSON*
2399 2318

  
......
2406 2325
Update Image Metadatum
2407 2326
......................
2408 2327

  
2409
.. note:: This operation is semantically equivalent in Cyclades and OS/Compute
2410
  besides the different URI.
2411

  
2412 2328
.. rubric:: Request
2413 2329

  
2414 2330
===================================== ====== ======== ==========
2415 2331
URI                                   Method Cyclades OS/Compute
2416 2332
===================================== ====== ======== ==========
2417
``/images/<image-id>/meta/<key>``     PUT    ✔        **✘**
2418
``/images/<image-id>/metadata/<key>`` PUT    **✘**    ✔
2333
``/images/<image-id>/metadata/<key>`` PUT    ✔        ✔
2419 2334
===================================== ====== ======== ==========
2420 2335

  
2421 2336
* **image-id** is the identifier of the image
......
2444 2359

  
2445 2360
Request body content::
2446 2361

  
2447
  meta: {<metadatum key>: <value>}
2362
  metadata: {<key>: <value>}
2448 2363

  
2449 2364
*Example Update Image Metadatum Item Request: JSON*
2450 2365

  
2451 2366
.. code-block:: javascript
2452 2367

  
2453
  {"meta": {"os": "Kubuntu"}}
2368
  {"metadata": {"os": "Kubuntu"}}
2454 2369

  
2455 2370
.. rubric:: Response
2456 2371

  
......
2470 2385

  
2471 2386
Request body content::
2472 2387

  
2473
  meta: {<metadatum key>: <value>}
2388
  metadata: {<key>: <value>}
2474 2389

  
2475 2390
*Example Update Image Metadatum Item Response: JSON*
2476 2391

  
2477 2392
.. code-block:: javascript
2478 2393

  
2479
  {"meta": {"os": "Kubuntu"}}
2394
  {"metadata": {"os": "Kubuntu"}}
2480 2395

  
2481 2396
Delete Image Metadatum
2482 2397
......................
2483 2398

  
2484 2399
Delete an image metadatum by its key.
2485 2400

  
2486
.. note:: This operation is semantically equivalent in Cyclades and OS/Compute
2487
  besides the different URI.
2488

  
2489 2401
.. rubric:: Request
2490 2402

  
2491 2403
===================================== ====== ======== ==========
2492 2404
URI                                   Method Cyclades OS/Compute
2493 2405
===================================== ====== ======== ==========
2494
``/images/<image-id>/meta/<key>``     DELETE ✔        **✘**
2495
``/images/<image-id>/metadata/<key>`` DELETE **✘**    ✔
2406
``/images/<image-id>/metadata/<key>`` DELETE ✔        ✔
2496 2407
===================================== ====== ======== ==========
2497 2408

  
2498 2409
* **image-id** is the identifier of the image
2410

  
2499 2411
* **key** is the key of a matadatum ``key``:``value`` pair
2500 2412

  
2501 2413
|
......
2609 2521

  
2610 2522
Response body content::
2611 2523

  
2612
  networks: {
2613
    values: [
2614
      {
2615
        <network attribute>: <value>,
2616
        ...
2617
      },
2524
  networks: [
2525
    {
2526
      <network attribute>: <value>,
2618 2527
      ...
2619
    ]
2528
    },
2529
    ...
2620 2530
  }
2621 2531

  
2622 2532
The ``detail`` operation lists the `full network attributes <#network-ref>`_,
......
2627 2537
.. code-block:: javascript
2628 2538

  
2629 2539
  {
2630
    "networks": {
2631
      "values": [
2632
        {"id": "1", "name": "public"},
2633
        {"id": "2", "name": "my private network"}
2634
      ]
2635
    }
2540
    "networks": [
2541
      {"id": "1", "name": "public"},
2542
      {"id": "2", "name": "my private network"}
2543
    ]
2636 2544
  }
2637 2545

  
2638 2546
*Example Networks List Response: JSON (detail)*
......
2640 2548
.. code-block:: javascript
2641 2549

  
2642 2550
  {
2643
    "networks": {
2644
      "values": [
2645
        {
2646
          "id": "1",
2647
          "name": "public",
2648
          "created": "2011-04-20T15:31:08.199640+00:00",
2649
          "updated": "2011-05-06T12:47:05.582679+00:00",
2650
          "attachments": {"values": ["nic-42-0", "nic-73-0"]}
2651
        }, {
2652
          "id": 2,
2653
          "name": "my private network",
2654
          "created": "2011-04-20T14:32:08.199640+00:00",
2655
          "updated": "2011-05-06T11:40:05.582679+00:00",
2656
          "attachments": {"values": ["nic-42-2", "nic-7-3"]}
2657
        }
2658
      ]
2659
    }
2551
    "networks": [
2552
      {
2553
        "id": "1",
2554
        "name": "public",
2555
        "created": "2011-04-20T15:31:08.199640+00:00",
2556
        "updated": "2011-05-06T12:47:05.582679+00:00",
2557
        "attachments": ["nic-42-0", "nic-73-0"]
2558
      }, {
2559
        "id": 2,
2560
        "name": "my private network",
2561
        "created": "2011-04-20T14:32:08.199640+00:00",
2562
        "updated": "2011-05-06T11:40:05.582679+00:00",
2563
        "attachments": ["nic-42-2", "nic-7-3"]
2564
      }
2565
    ]
2660 2566
  }
2661 2567

  
2662 2568

  
......
2773 2679
      "cidr": "192.168.1.0/24",
2774 2680
      "type": "MAC_FILTERED",
2775 2681
      "gateway": null,
2776
      "attachments": {"values": []}
2682
      "attachments": []
2777 2683
    }
2778 2684
  }
2779 2685

  
......
2843 2749
      "cidr": "192.168.1.0/24",
2844 2750
      "type": "MAC_FILTERED",
2845 2751
      "gateway": null,
2846
      "attachments": {"values": []}
2752
      "attachments": []
2847 2753
    }
2848 2754
  }
2849 2755

  
......
3092 2998
updated          Date of last modification  ✔        ✔
3093 2999
created          Date of creation           ✔        ✔
3094 3000
hostId           Physical host              empty    ✔
3095
imageRef         Image ID                   ✔        **✘**
3096
image            A full image descreption   **✘**    ✔
3097
flavorRef        Flavor ID                  ✔        **✘**
3098
flavor           A full flavor description  **✘**    ✔
3001
image            A full image descreption   ✔        ✔
3002
flavor           A full flavor description  ✔        ✔
3099 3003
adminPass        Superuser Password         ✔        ✔
3100 3004
suspended        If server is suspended     ✔        ✔
3101 3005
progress         Build progress             ✔        ✔
......
3114 3018

  
3115 3019
* **hostId** is always empty in Cyclades and is returned for compatibility reasons
3116 3020

  
3117
* **imageRef** and **flavorRef** always refer to existing Image and Flavor
3118
  specifications. Cyclades improved the OpenStack approach by using references
3119
  to Image and Flavor attributes, instead of listing their full properties
3021
* **image** and **flavor** always refer to existing Image and Flavor
3022
  specifications.
3120 3023

  
3121 3024
* **adminPass** in Cyclades it is generated automatically during creation. For
3122 3025
  safety, it is not stored anywhere in the system and it cannot be recovered
......
3256 3159
ram               Server RAM size      ✔        ✔
3257 3160
SNF:disk_template Storage mechanism    ✔        **✘**
3258 3161
disk              Server disk size     ✔        ✔
3259
cpu               # of Virtual CPUs    ✔        **✘**
3260
vcpus             # of Virtual CPUs    **✘**    ✔
3162
vcpus             # of Virtual CPUs    ✔        ✔
3261 3163
links rel         Atom link rel field  **✘**    ✔
3262 3164
links href        Atom link href field **✘**    ✔
3263 3165
================= ==================== ======== ==========
......
3273 3175

  
3274 3176
* **disk** the servers disk size in GB
3275 3177

  
3276
* **cpu** and **vcpus** are semantically equivalent terms in Cyclades and
3277
  OS/Compute APIs respectively and they refer to the number of virtual CPUs
3278
  assigned to a server
3178
* **vcpus** refer to the number of virtual CPUs assigned to a server
3279 3179

  
3280 3180
* **link ref** and **link href** refer to the Atom link attributes that are
3281 3181
  `used in OS/Compute API <http://docs.openstack.org/api/openstack-compute/2/content/List_Flavors-d1e4188.html>`_.

Also available in: Unified diff