Statistics
| Branch: | Tag: | Revision:

root / lib / rapi @ 7fa310f6

# Date Author Comment
7fa310f6 04/01/2011 04:42 pm René Nussbaumer

RAPI: Convert instance shutdown to the new FillOpCode

Signed-off-by: René Nussbaumer <>
Reviewed-by: Michael Hanselmann <>

9a8ae794 03/30/2011 02:51 pm Michael Hanselmann

RAPI client: Remove support for version 0 instance creation requests

Signed-off-by: Michael Hanselmann <>
Reviewed-by: Iustin Pop <>

3fd7f652 03/30/2011 02:51 pm Michael Hanselmann

RAPI server: Drop support for instance creation format 0

Ganeti 2.1.3, released in June 2010, added support for a new, extensible
instance creation request format, called version 1. This patch removes
support for the old and undocumented version 0 format....

d914c76f 03/29/2011 06:23 pm Simeon Miteff

Improved GanetiRapiClient docstrings

- Added @rtype and/or @return where missing
- Fixed @param for Query() filter_ parameter (colon was missing)

Signed-off-by: Simeon Miteff <>
Signed-off-by: Michael Hanselmann <>...

dde0e97c 03/18/2011 04:54 pm Michael Hanselmann

RAPI client: Tidy and test WaitForJobCompletion

- Use constants
- Don't sleep if no delay is given
- Mark function as deprecated: it uses polling instead of waiting for changes
(but the latter needs authentication); it can still be used
- Add unittests...

63d5eb8a 03/18/2011 04:54 pm Michael Hanselmann

RAPI client: Add job status constants

Signed-off-by: Michael Hanselmann <>
Reviewed-by: René Nussbaumer <>

98805538 03/18/2011 04:54 pm Michael Hanselmann

RAPI client: Job IDs are strings

Signed-off-by: Michael Hanselmann <>
Reviewed-by: René Nussbaumer <>

cfda0e48 03/18/2011 01:05 pm Iustin Pop

RAPI client: fix epydoc formatting

Signed-off-by: Iustin Pop <>
Reviewed-by: Michael Hanselmann <>

16c13387 03/18/2011 12:00 pm Theo Van Dinter

Add a helper function to the RAPI client

This adds a new method WaitForJobCompletion that can be used for
client who are not interested in the entire job log, just in its
completion status.

Signed-off-by: Iustin Pop <>
Reviewed-by: Iustin Pop <>...

208a6cff 03/15/2011 03:04 pm Michael Hanselmann

RAPI: Add support for querying resources

- Access is only permitted for authenticated clients (queries can return
sensitive data)
- Filters can be specified when sending a PUT request
- Updates RAPI client, documentation and tests

Signed-off-by: Michael Hanselmann <>...

1c7fd467 03/15/2011 03:04 pm Michael Hanselmann

Add support for query resources in RAPI URIs

Signed-off-by: Michael Hanselmann <>
Reviewed-by: René Nussbaumer <>

b713fb7a 03/07/2011 03:43 pm Iustin Pop

Merge branch 'stable-2.4'

  • stable-2.4:
    Release 2.4.0
    Small improvement to the ganeti man page
    Fix LUClusterRepairDiskSizes and rpc result usage
    Fix RPC mismatch in blockdev_getsize[s]
    RAPI: fix evacuate node resource
    Fix typo in kvm-ifup script...
37aeca89 03/07/2011 12:36 pm Iustin Pop

Merge branch 'devel-2.3' into devel-2.4

  • devel-2.3:
    Fix LUClusterRepairDiskSizes and rpc result usage
    Fix RPC mismatch in blockdev_getsize[s]
    RAPI: fix evacuate node resource

Signed-off-by: Iustin Pop <>
Reviewed-by: René Nussbaumer <>

63ea9789 03/04/2011 12:34 pm Iustin Pop

RAPI: fix evacuate node resource

PollJob returns the whole op_results, hence a list of opcode results.

Signed-off-by: Iustin Pop <>
Reviewed-by: René Nussbaumer <>

e83d962b 03/02/2011 10:12 pm Guido Trotter

Remove bridge field from rapi daemon

Signed-off-by: Guido Trotter <>
Reviewed-by: Iustin Pop <>

c97fcab8 03/02/2011 10:11 pm Guido Trotter

Remove bridge field from rapi client

Signed-off-by: Guido Trotter <>
Reviewed-by: Iustin Pop <>

1e28e3b8 02/23/2011 08:55 pm Michael Hanselmann

Add constants for node roles

Signed-off-by: Michael Hanselmann <>
Reviewed-by: Iustin Pop <>

cbfa4f0f 02/22/2011 05:57 pm Michael Hanselmann

Merge branch 'devel-2.4'

  • devel-2.4: (60 commits)
    Update news and bump version for 2.4.0 rc2
    Fix pylint warnings
    TestRapiInstanceRename use instance name
    Change the list formatting to a 'special' chars
    Add support for merging node groups
    Add option to rename groups on conflict...
bd0807fe 02/18/2011 02:16 pm Guido Trotter

RAPI: remove required parameters for reinstall

Before c744425f354f1bef2d0d7d306e2d00c494d67d2b instance reinstall
accepted the "os" and "nostartup" optional query parameters. With that
commit it was changed to allow "os" "start" and "osparams" via body
rather than encoded in the URL. Unfortunately that commit introduced a...

4b163794 02/15/2011 03:20 pm Michael Hanselmann

RAPI: Remove “__version__” for instance creation

If left in data, FillOpCode will complain. This fixes the QA breakage
after commit 526a662af.

Signed-off-by: Michael Hanselmann <>
Reviewed-by: Iustin Pop <>

527fbde8 02/15/2011 01:11 pm Michael Hanselmann

RAPI: Use FillOpCode for adding node group

Signed-off-by: Michael Hanselmann <>
Reviewed-by: René Nussbaumer <>

8a08be3b 02/15/2011 01:11 pm Michael Hanselmann

RAPI: Use FillOpCode for renaming groups

Signed-off-by: Michael Hanselmann <>
Reviewed-by: René Nussbaumer <>

12da663a 02/15/2011 01:11 pm Michael Hanselmann

Make OpGroupRename consistent with OpInstanceRename

OpInstanceRename uses “instance_name” (like almost all other OpInstance*
opcodes), not “old_name”, to specify the original name. OpGroupRename is
made consistent by renaming “old_name” to “group_name”.
...

526a662a 02/15/2011 01:11 pm Michael Hanselmann

RAPI: Clean up instance creation, use generated docs

- Use FillOpCode and unify parameter names between RAPI and opcode
- Generate parameter documentation
- Improve opcode parameter documentation

Signed-off-by: Michael Hanselmann <>
Reviewed-by: René Nussbaumer <>

df340fae 02/15/2011 01:11 pm Michael Hanselmann

RAPI: Use FillOpCode for modifying node group

Signed-off-by: Michael Hanselmann <>
Reviewed-by: René Nussbaumer <>

88bc199a 02/15/2011 01:11 pm Michael Hanselmann

RAPI: Use FillOpCode for renaming instances

Signed-off-by: Michael Hanselmann <>
Reviewed-by: René Nussbaumer <>

b166ef84 02/15/2011 01:09 pm Michael Hanselmann

baserlib.FillOpCode: Allow parameter rename

Some RAPI parameters don't match the name of the underlying
opcode. With this patch they can be renamed while filling
the opcode.

Signed-off-by: Michael Hanselmann <>
Reviewed-by: René Nussbaumer <>

d1c172de 02/04/2011 07:05 pm Michael Hanselmann

RAPI: Use FillOpCode for replacing disks

Signed-off-by: Michael Hanselmann <>
Reviewed-by: Iustin Pop <>

ee5549c7 02/04/2011 02:49 pm Michael Hanselmann

RAPI: Use FillOpCode for modifying instance

Signed-off-by: Michael Hanselmann <>
Reviewed-by: Iustin Pop <>

c1a27c9a 02/04/2011 02:49 pm Michael Hanselmann

RAPI: Use FillOpCode for migrating instance

Signed-off-by: Michael Hanselmann <>
Reviewed-by: Iustin Pop <>

07ce3e70 02/04/2011 02:49 pm Michael Hanselmann

RAPI: Use FillOpCode for exporting instance

Signed-off-by: Michael Hanselmann <>
Reviewed-by: Iustin Pop <>

b82d4c5e 01/28/2011 04:31 pm Michael Hanselmann

Add RAPI resource for instance console

Signed-off-by: Michael Hanselmann <>
Reviewed-by: Iustin Pop <>

54d4c13b 01/27/2011 01:04 pm Michael Hanselmann

RAPI client: Wrap /2/redistribute-config resource

Signed-off-by: Michael Hanselmann <>
Reviewed-by: René Nussbaumer <>

b680c8be 01/27/2011 01:04 pm Michael Hanselmann

RAPI client: De-/activating instance disks

Signed-off-by: Michael Hanselmann <>
Reviewed-by: René Nussbaumer <>

d1602edc 01/18/2011 01:47 pm Iustin Pop

Rename OpAddTags and LUAddTags

Signed-off-by: Iustin Pop <>
Reviewed-by: René Nussbaumer <>
Reviewed-by: Michael Hanselmann <>

c873d91c 01/18/2011 01:47 pm Iustin Pop

Rename OpStartupInstance and LUStartupInstance

Signed-off-by: Iustin Pop <>
Reviewed-by: René Nussbaumer <>
Reviewed-by: Michael Hanselmann <>

0ae89533 01/18/2011 01:47 pm Iustin Pop

Rename OpNodeEvacuationStrategy and LUNodeEvacuationStrategy

Signed-off-by: Iustin Pop <>
Reviewed-by: René Nussbaumer <>
Reviewed-by: Michael Hanselmann <>

5b14a488 01/18/2011 01:47 pm Iustin Pop

Rename OpMigrateNode and LUMigrateNode

Signed-off-by: Iustin Pop <>
Reviewed-by: René Nussbaumer <>

2cee4077 01/18/2011 01:47 pm Iustin Pop

Rename OpModifyNodeStorage and LUModifyNodeStorage

Signed-off-by: Iustin Pop <>
Reviewed-by: Michael Hanselmann <>
Reviewed-by: René Nussbaumer <>

ad8d0595 01/18/2011 01:47 pm Iustin Pop

Rename OpQueryNodeStorage and LUQueryNodeStorage

Signed-off-by: Iustin Pop <>
Reviewed-by: René Nussbaumer <>
Reviewed-by: Michael Hanselmann <>

f13973c4 01/18/2011 01:47 pm Iustin Pop

Rename OpSetNodeParams and LUSetNodeParams

Signed-off-by: Iustin Pop <>
Reviewed-by: René Nussbaumer <>
Reviewed-by: Michael Hanselmann <>

da2d02e7 01/18/2011 01:47 pm Iustin Pop

Rename OpDiagnoseOS and LUDiagnoseOS

Signed-off-by: Iustin Pop <>
Reviewed-by: René Nussbaumer <>
Reviewed-by: Michael Hanselmann <>

3f0ab95f 01/18/2011 01:47 pm Iustin Pop

Rename OpDelTags and LUDelTags

Signed-off-by: Iustin Pop <>
Reviewed-by: René Nussbaumer <>
Reviewed-by: Michael Hanselmann <>

75c866c2 01/18/2011 01:47 pm Iustin Pop

Rename OpMigrateInstance and LUMigrateInstance

Signed-off-by: Iustin Pop <>
Reviewed-by: René Nussbaumer <>

dc28c4e4 01/18/2011 01:47 pm Iustin Pop

Rename OpQueryInstanceData and LUQueryInstanceData

Signed-off-by: Iustin Pop <>
Reviewed-by: René Nussbaumer <>

90ab1a95 01/18/2011 01:47 pm Iustin Pop

Rename OpRebootInstance and LURebootInstance

Signed-off-by: Iustin Pop <>
Reviewed-by: René Nussbaumer <>

5073fd8f 01/18/2011 01:47 pm Iustin Pop

Rename OpReinstallInstance and LUReinstallInstance

Signed-off-by: Iustin Pop <>
Reviewed-by: René Nussbaumer <>
Reviewed-by: Michael Hanselmann <>

3cd2d4b1 01/18/2011 01:47 pm Iustin Pop

Rename OpRemoveInstance and LURemoveInstance

Signed-off-by: Iustin Pop <>
Reviewed-by: René Nussbaumer <>
Reviewed-by: Michael Hanselmann <>

5659e2e2 01/18/2011 01:47 pm Iustin Pop

Rename OpRenameInstance and LURenameInstance

Signed-off-by: Iustin Pop <>
Reviewed-by: René Nussbaumer <>

668f755d 01/18/2011 01:47 pm Iustin Pop

Rename OpReplaceDisks and LUReplaceDisks

Signed-off-by: Iustin Pop <>
Reviewed-by: René Nussbaumer <>

9a3cc7ae 01/18/2011 01:47 pm Iustin Pop

Rename OpSetInstanceParams and LUSetInstanceParams

Signed-off-by: Iustin Pop <>
Reviewed-by: René Nussbaumer <>
Reviewed-by: Michael Hanselmann <>

ee3e37a7 01/18/2011 01:47 pm Iustin Pop

Rename OpShutdownInstance and LUShutdownInstance

Signed-off-by: Iustin Pop <>
Reviewed-by: René Nussbaumer <>
Reviewed-by: Michael Hanselmann <>

fabf1731 01/18/2011 01:47 pm Iustin Pop

Rename OpAddGroup and LUAddGroup

Signed-off-by: Iustin Pop <>
Reviewed-by: René Nussbaumer <>

934704ae 01/18/2011 01:47 pm Iustin Pop

Rename OpAssignGroupNodes and LUAssignGroupNodes

Signed-off-by: Iustin Pop <>
Reviewed-by: René Nussbaumer <>

4d1baa51 01/18/2011 01:47 pm Iustin Pop

Rename OpRemoveGroup and LURemoveGroup

Signed-off-by: Iustin Pop <>
Reviewed-by: René Nussbaumer <>

a8173e82 01/18/2011 01:47 pm Iustin Pop

Rename OpRenameGroup and LURenameGroup

Signed-off-by: Iustin Pop <>
Reviewed-by: René Nussbaumer <>

7cbf74f0 01/18/2011 01:47 pm Iustin Pop

Rename OpSetGroupParams and LUSetGroupParams

Signed-off-by: Iustin Pop <>
Reviewed-by: René Nussbaumer <>

83f5d475 01/18/2011 01:47 pm Iustin Pop

Rename OpActivateInstanceDisks and LUActivateInstanceDisks

Signed-off-by: Iustin Pop <>
Reviewed-by: René Nussbaumer <>

e1530b10 01/18/2011 01:47 pm Iustin Pop

Rename OpCreateInstance and LUCreateInstance

Signed-off-by: Iustin Pop <>
Reviewed-by: René Nussbaumer <>

e176281f 01/18/2011 01:47 pm Iustin Pop

Rename OpDeactivateInstanceDisks and LUDeactivateInstanceDisks

Signed-off-by: Iustin Pop <>
Reviewed-by: René Nussbaumer <>

60472d29 01/18/2011 01:47 pm Iustin Pop

Rename OpGrowDisk and LUGrowDisk

Signed-off-by: Iustin Pop <>
Reviewed-by: René Nussbaumer <>

71910715 01/18/2011 01:47 pm Iustin Pop

Rename OpPrepareExport and LUPrepareExport

Signed-off-by: Iustin Pop <>
Reviewed-by: René Nussbaumer <>

d1240007 01/18/2011 01:47 pm Iustin Pop

Rename OpRedistributeConfig and LURedistributeConfig

Signed-off-by: Iustin Pop <>
Reviewed-by: René Nussbaumer <>

a6682fdc 01/18/2011 01:47 pm Iustin Pop

Rename OpSetClusterParams and LUSetClusterParams

Signed-off-by: Iustin Pop <>
Reviewed-by: René Nussbaumer <>

4ff922a2 01/18/2011 01:47 pm Iustin Pop

Rename OpExportInstance and LUExportInstance

Signed-off-by: Iustin Pop <>
Reviewed-by: René Nussbaumer <>

b58a4d16 01/12/2011 07:54 pm Michael Hanselmann

Fix typos in RAPI docstrings, add unittest

This patch fixes a number of typos and standardizes RAPI resource
docstrings. A unittest is added.

Signed-off-by: Michael Hanselmann <>
Reviewed-by: Iustin Pop <>

4245446f 01/10/2011 06:32 pm Adeodato Simo

Expose OpAssignGroupNodes over RAPI and RAPI client

Signed-off-by: Adeodato Simo <>
Reviewed-by: Michael Hanselmann <>

e23881ed 01/05/2011 06:14 pm Michael Hanselmann

RAPI: Add resource to grow instance disk

Signed-off-by: Michael Hanselmann <>
Reviewed-by: Iustin Pop <>

cfaeaaf7 01/05/2011 01:27 pm Michael Hanselmann

baserlib: Add function for filling opcodes

This function makes use of the opcode parameters which now live
directly in the opcode. A number of RAPI resources can now be simplified.

Signed-off-by: Michael Hanselmann <>
Reviewed-by: Iustin Pop <>

62e999a5 01/05/2011 01:27 pm Michael Hanselmann

RAPI: Add resource to modify cluster

Signed-off-by: Michael Hanselmann <>
Reviewed-by: Iustin Pop <>

f18fab7d 12/13/2010 06:33 pm Adeodato Simo

Expose OpSetGroupParams in RAPI and RAPI client

This creates the /2/groups/<name>/modify resource; at the moment, only the
"alloc_policy" attribute can be modified.

Signed-off-by: Adeodato Simo <>
Reviewed-by: Michael Hanselmann <>

90e99856 12/13/2010 06:33 pm Adeodato Simo

Add the "alloc_policy" attribute to node groups

This can be set at group creation time and via OpSetGroupParams. The default
is "preferred", and existing node groups from previous Ganeti version will
get the attribute set to this value.

Signed-off-by: Adeodato Simo <>...

a268af8d 12/08/2010 02:27 pm Adeodato Simo

Group operations: update ganeti.rapi.client with all node group operations

Signed-off-by: Adeodato Simo <>
Reviewed-by: Michael Hanselmann <>

0dbaa9ca 12/08/2010 02:27 pm Adeodato Simo

Group operations: expose add/remove/rename in RAPI

Signed-off-by: Adeodato Simo <>
Reviewed-by: Michael Hanselmann <>

4edc512c 12/08/2010 02:27 pm Adeodato Simo

Expose new node group attributes in CLI and RAPI

Signed-off-by: Adeodato Simo <>
Reviewed-by: Michael Hanselmann <>

0897dc97 12/01/2010 09:31 pm Adeodato Simo

Querying node groups: RAPI support

This implements /groups and /groups/%s RAPI end points.

Signed-off-by: Adeodato Simo <>
Signed-off-by: Iustin Pop <>
Reviewed-by: Iustin Pop <>

c744425f 11/29/2010 07:52 pm Michael Hanselmann

RAPI: Implement OS parameters for instance reinstallation

Dictionaries are hard to encode into query strings, therefore the
“/2/instances/[instance_name]/reinstall” resource is changed to accept
its parameters via the request body. The old query string parameters are...

0b5303da 11/28/2010 03:57 pm Iustin Pop

Move compilation of some regexes to init time

I have found a few regexes which are static and thus can be moved to
load time, rather than run time, creation.

Signed-off-by: Iustin Pop <>
Reviewed-by: Michael Hanselmann <>

04a8865b 11/23/2010 01:01 pm Lance Albertson

RAPI: implement no_install during instance creation

Signed-off-by: Lance Albertson <>
Signed-off-by: Iustin Pop <>
Reviewed-by: Iustin Pop <>
Reviewed-by: Michael Hanselmann <>

fd254195 11/22/2010 09:11 pm Iustin Pop

RAPI: export the node group UUID in the node query

Signed-off-by: Iustin Pop <>
Reviewed-by: Michael Hanselmann <>

c190e817 10/27/2010 01:46 pm Iustin Pop

Export the capability flags in query, rapi, ialloc

Signed-off-by: Iustin Pop <>
Reviewed-by: Michael Hanselmann <>

691c81b7 10/20/2010 03:53 pm Michael Hanselmann

utils: Add function to find items in dictionary using regex

This basically extracts a small piece of code from ganeti-rapi and puts
it into a utility function. RAPI resources are found using a dictionary
in which the keys can either be static strings or compiled regular...

90224407 10/13/2010 12:59 pm Iustin Pop

Export more information via LUQueryInstances/RAPI

Currently, the custom instance parameters (hv, be, nicp) are only
queryable via LUQueryInstanceData. LUQueryInstance returns only the
filled parameters, thus its users (especially RAPI) have no way to know...

df5758b1 10/05/2010 12:11 pm Iustin Pop

Merge branch 'devel-2.2'

  • devel-2.2:
    gnt-job info: Sort input fields
    KVM: Add function to check the hypervisor version
    Bump version to 2.2.0, update NEWS
    Fix instance rename regression from 3fe11ba3
    Fix instance rename regression from 3fe11ba3...
d22dfef7 09/30/2010 03:10 am Iustin Pop

Change behaviour of OpDiagnoseOS w.r.t. 'valid'

This patch changes the behaviour of OpDiagnoseOS with regards to the
'valid' field to be similar to the one for the hidden/blacklisted
fields: unless this field is requested, invalid OSes are filtered out.
...

2bc27b91 09/16/2010 01:56 pm Michael Hanselmann

Merge branch 'devel-2.2'

  • devel-2.2:
    QA: Test more tag operations via RAPI
    qa_rapi: Fix indentation error
    opcode summary: improve display for list summaries
    cmdlib: Fix type of “name” parameter for tag operations
    rlib2: Set tag operation param “name” to None for cluster tags...
5313eed7 09/15/2010 10:48 pm Michael Hanselmann

rlib2: Set tag operation param “name” to None for cluster tags

Otherwise parameter verification in the master daemon fails.

Signed-off-by: Michael Hanselmann <>
Reviewed-by: Iustin Pop <>

0f979a34 08/18/2010 07:59 pm Guido Trotter

Merge branch 'devel-2.2'

  • devel-2.2:
    RAPI client: Support modifying instances
    RAPI: Allow modifying instance
    Small fixes for instance creation via RAPI documentation
    gnt-debug: Extend job queue tests
    jqueue: Mark opcodes following failed ones as failed, too...
3b7158ef 08/18/2010 02:21 pm Michael Hanselmann

RAPI client: Support modifying instances

Signed-off-by: Michael Hanselmann <>
Reviewed-by: Iustin Pop <>

3882937a 08/18/2010 02:21 pm Michael Hanselmann

RAPI: Allow modifying instance

Signed-off-by: Michael Hanselmann <>
Reviewed-by: Iustin Pop <>

1a8337f2 08/18/2010 11:28 am Manuel Franceschini

rapi.client, http.client: Format url correctly when using IPv6

This patch moves the FormatAddress helper function from daemon.py to
netutils.py. This enables its use in http.client as well as in
rapi.client. Furthermore this adds functionality to format IPv6...

c63eb9c0 08/10/2010 06:56 pm Michael Hanselmann

RAPI client: Fix docstring for migrating instance

Signed-off-by: Michael Hanselmann <>
Reviewed-by: Iustin Pop <>

d654aae1 08/10/2010 06:56 pm Michael Hanselmann

RAPI client: Support renaming instances

Signed-off-by: Michael Hanselmann <>
Reviewed-by: Iustin Pop <>

d56e7dc7 08/10/2010 06:55 pm Michael Hanselmann

Allow renaming instances via RAPI

Signed-off-by: Michael Hanselmann <>
Reviewed-by: Iustin Pop <>

a5eba783 08/10/2010 06:55 pm Michael Hanselmann

RAPI client: Don't re-use PycURL object

With this patch, a new PycURL object will be created for each request.
This should make the RAPI client safe for simultaneous calls from
multiple threads. Unittests are adjusted accordingly.

An unnecessary variable assignment is also removed from the unittest...

2c0be3d0 07/29/2010 08:50 pm Michael Hanselmann

Add check for RAPI paths to start with /2

During a discussion in July 2010 it was decided that we'll stabilize on /2. See
message ID <> for reference.

Signed-off-by: Michael Hanselmann <>
Reviewed-by: Iustin Pop <>

fcee9675 07/29/2010 04:05 pm David Knowles

RAPI client: The os argument for instance reinstalls is optional

Signed-off-by: David Knowles <>
Reviewed-by: Michael Hanselmann <>

e0ac6ce6 07/29/2010 04:05 pm Michael Hanselmann

RAPI client: Support migrating instances

Signed-off-by: Michael Hanselmann <>
Reviewed-by: Iustin Pop <>

5823e0d2 07/29/2010 04:05 pm Michael Hanselmann

RAPI: Support migrating instances

Signed-off-by: Michael Hanselmann <>
Reviewed-by: Iustin Pop <>

130f0966 07/28/2010 11:27 pm Iustin Pop

RAPI: Add os params to instance creation v1

Since the RAPI QA suite doesn't seem to offer easy testing of failed
creations, I didn't add this to the QA. Pointers on how to do it are
welcome.

The patch also changes the 'os' argument to be required, since that is...