API

Description

VmShepherd implements an RPC API which is available at the api handler and can be configured.

In configuration you prepare an information which method is available to a user. This API implements a simple interface to control Virtual Machines lifecycle in our environment. We also provide an easy way to gather information about presets and virtual machines in environment.

Configuration

You can configure available methods for API.

Example

http:
# example of allowed_methods list
  api:
    allowed_methods:
      - list_vms
      - terminate_vm
      - get_vm_metadata

Sample calls to API

Sample code is also available in the repository

List Virtual Machines in a preset

>>> import asyncio
>>> from aiohttp_jsonrpc.client import ServerProxy, batch
>>> loop = asyncio.get_event_loop()
>>> client = ServerProxy("http://127.0.0.1/api", loop=loop)
>>> async def main():
>>>     print(await client.list_vms(preset='samplePreset'))
>>> client.close()
>>> loop.run_until_complete(main())

[2, {'1111111-1111-1111-1111-11111111': {'ip': '10.177.1.2', 'state': 'running'}, '22222-2222-2222-2222-2222222': {'ip': '10.177.1.3', 'state': 'running'}}]

Get Virtual Machine metadata

>>> import asyncio
>>> from aiohttp_jsonrpc.client import ServerProxy, batch
>>> loop = asyncio.get_event_loop()
>>> client = ServerProxy("http://127.0.0.1/api", loop=loop)
>>> async def main():
>>>     print(await client.get_vm_metadata(preset='samplePreset', id='1111111111111111111'))
>>> client.close()
>>> loop.run_until_complete(main())

{'timed_shutdown': '111111111111'}

Terminate Virtual Machine

>>> import asyncio
>>> from aiohttp_jsonrpc.client import ServerProxy, batch
>>> loop = asyncio.get_event_loop()
>>> client = ServerProxy("http://127.0.0.1/api", loop=loop)
>>> async def main():
>>>     print(await client.terminate_vm(preset='samplePreset', id='1111111111111111111'))
>>> client.close()
>>> loop.run_until_complete(main())

'OK'