Testing deployments, instances, flavors
diff --git a/xos/tests/api/hooks.py b/xos/tests/api/hooks.py
index 563511c..1f4a0ad 100644
--- a/xos/tests/api/hooks.py
+++ b/xos/tests/api/hooks.py
@@ -57,6 +57,9 @@
     for s in Flavor.objects.all():
         s.delete(purge=True)
 
+    for s in Image.objects.all():
+        s.delete(purge=True)
+
     # print 'DB Cleaned'
 
 
@@ -101,7 +104,7 @@
     vsg_service.name = 'service_vsg'
 
     # vSG slice
-    vsg_slice = Slice()
+    vsg_slice = Slice(id=2)
     vsg_slice.name = site.login_base + "_testVsg"
     vsg_slice.service = vsg_service.id
     vsg_slice.site = site
@@ -116,8 +119,11 @@
     volt_service.name = 'service_volt'
     volt_service.save()
 
+    # cvpe image
+    createImage('ubuntu-vcpe4')
+
     # vcpe slice
-    vcpe_slice = Slice()
+    vcpe_slice = Slice(id=3)
     vcpe_slice.name = site.login_base + "_testVcpe"
     vcpe_slice.service = Service.objects.get(kind='vCPE')
     vcpe_slice.site = site
@@ -127,7 +133,7 @@
     # print 'vcpe_slice created'
 
     # create a lan network
-    lan_net = Network()
+    lan_net = Network(id=1)
     lan_net.name = 'lan_network'
     lan_net.owner = vcpe_slice
     lan_net.template = private_template
@@ -192,11 +198,71 @@
     large.save()
 
 
+def createSlice():
+    site = Site.objects.get(name='MySite')
+    user = User.objects.get(email="padmin@vicci.org")
+
+    sl = Slice(id=1)
+    sl.name = site.login_base + "_testSlice"
+    sl.site = site
+    sl.caller = user
+    sl.save()
+    return sl
+
+
 def createDeployment():
     deployment = Deployment(id=1)
     deployment.name = 'MyTestDeployment'
     deployment.save()
-    print 'Created deployment: ', deployment.id
+    return deployment
+
+
+def createImage(name):
+    img = Image(id=1)
+    img.name = name
+    img.disk_format = 'QCOW2'
+    img.kind = 'vm'
+    img.save()
+    return img
+
+
+def createNode(deployment):
+    site = Site.objects.get(name='MySite')
+
+    site_deployment = SiteDeployment(id=1)
+    site_deployment.site = site
+    site_deployment.deployment = deployment
+    site_deployment.save()
+
+    node = Node(id=1)
+    node.name = 'test-node'
+    node.site = site
+    node.site_deployment = site_deployment
+    node.save()
+    return node
+
+
+def setupInstance():
+    deployment = createDeployment()
+    sl = createSlice()
+    node = createNode(deployment)
+    img = createImage('test-image')
+    # print {'image': img.id, 'deployment': deployment.id, 'slice': sl.id}
+    return {'image': img, 'deployment': deployment, 'slice': sl}
+
+
+def createInstance():
+    requirements = setupInstance()
+    user = User.objects.get(email="padmin@vicci.org")
+
+    instance = Instance(id=1)
+    instance.name = 'test-instance'
+    instance.node = Node.objects.all()[0]
+    instance.image = requirements['image']
+    instance.slice = requirements['slice']
+    instance.deployment = requirements['deployment']
+    instance.caller = user
+    instance.save()
 
 
 @hooks.before_all
@@ -213,9 +279,15 @@
     transaction['request']['headers']['X-CSRFToken'] = auth['token']
     transaction['request']['headers']['Cookie'] = "xossessionid=%s; xoscsrftoken=%s" % (auth['sessionid'], auth['token'])
     createTestSubscriber()
+    setupInstance()
     sys.stdout.flush()
 
 
+# @hooks.after_each
+# def my_after_each(transaction):
+#     print "-------------------------------- Test end --------------------------------"
+
+
 @hooks.before("Truckroll > Truckroll Collection > Create a Truckroll")
 def test1(transaction):
     setUpTruckroll()
@@ -245,11 +317,31 @@
 
 
 @hooks.before("Deployments > Deployments > View a Deployment Detail")
-# @hooks.before("Deployments > Deployments > Delete a Deployment")
-def deployments_collection(transaction):
+def get_deployments(transaction):
     createDeployment()
 
 
+@hooks.before("Deployments > Deployments > Delete a Deployment")
+def delete_deployments(transaction):
+    createDeployment()
+
+
+@hooks.before("Instances > Instances Collection > Create an Instance")
+def create_instance(transaction):
+    setupInstance()
+    transaction['skip'] = True
+
+
+@hooks.before("Instances > Instances Detail > Get instance details")
+def get_instance(transaction):
+    createInstance()
+
+
+@hooks.before("Instances > Instances Detail > Delete instance")
+def delete_instance(transaction):
+    createInstance()
+
+
 @hooks.before("Example > Example Services Collection > List all Example Services")
 def exampleTest(transaction):
     transaction['skip'] = True