#!/usr/bin/python3

import amulet
import openvim

def deploy_openvim():
    d = amulet.Deployment()
    d.add("mysql", series="trusty")
    d.add("openvim-controller", series="xenial")
    d.add("openvim-compute", charm="local:xenial/openvim-compute", series="xenial")
    d.relate("openvim-controller:db", "mysql:db")
    d.relate("openvim-controller:compute", "openvim-compute:compute")
    d.setup(timeout=900)
    d.sentry.wait()
    return d

def get_openvim_connection(deployment):
    address = deployment.sentry["openvim-controller"][0].info["public-address"]
    return openvim.connect(address)

def create_vm(deployment):
    c = get_openvim_connection(deployment)
    tenant = c.get_tenants()[0]
    c.set_active_tenant(tenant)
    networks = c.get_networks()
    image = c.get_images()[0]
    flavor = c.get_flavors()[0]

    server = c.create_server(
        name="vm",
        description="test vm",
        image=image,
        flavor=flavor,
        networks=networks
    )

    return server

def test_vm_creation():
    d = deploy_openvim()
    create_vm(d)

if __name__ == "__main__":
    test_vm_creation()
