Source code for vmshepherd.iaas.abstract

''' IaaS driver is responsible for communication with IaaS provider. To VmShepherd work, driver should implement `create_vm`, `terminate_vms`, `list_vms` and `get_vm_info`.

Initialization - consider following config:

::

   iaas:
     driver: SomeIaaS
     auth_key: AAAA
     auth_secret: BBBB
     some_x: CCC

All params will be passed as config dict to the driver init:

'''
from .vm import Vm
from typing import Any, Dict, List


[docs]class AbstractIaasDriver: def __init__(self, config=None): pass
[docs] async def create_vm(self, preset_name: str, image: str, flavor: str, security_groups: List=None, userdata: Dict=None, key_name: str=None, availability_zone: str=None, subnets: List=None) -> Any: """ Create (boot) a new server. :arg string preset_name: Name of vm group where vm is created. :arg string image: Image name. :arg string flavor: Flavor (or instance_type in AWS) name. :arg list security_groups: A list of security group names. :arg dict userdata: A dict of arbitrary key/value metadata to store in grains. :arg string key_name: (optional extension) name of previously created keypair to inject into the instance. :arg string availability_zone: Name of the availability zone for instance placement. :arg string subnets: List of the subnets for instance placement. Returns Any vm_id. """ raise NotImplementedError
[docs] async def list_vms(self, preset_name: str) -> List[Vm]: """ List vms. :arg string preset_name: List VMs with name preset_name. Returns list of Vm objects. """ raise NotImplementedError
[docs] async def terminate_vm(self, vm_id: Any) -> None: """ Terminates/discards vm. :arg string vm_id: Id Vm to terminate. """ raise NotImplementedError
[docs] async def get_vm(self, vm_id: Any) -> Vm: """ Get vm info (with metadata and/or tags). :arg string vm_id: Id Vm to get. Returns list of Vm objects. """ raise NotImplementedError
[docs] def reconfigure(self, config): pass