summaryrefslogtreecommitdiffstats
path: root/testing/robot/lib/FDSLibrary.py
diff options
context:
space:
mode:
Diffstat (limited to 'testing/robot/lib/FDSLibrary.py')
-rw-r--r--testing/robot/lib/FDSLibrary.py49
1 files changed, 47 insertions, 2 deletions
diff --git a/testing/robot/lib/FDSLibrary.py b/testing/robot/lib/FDSLibrary.py
index 2e29d6c..0cb43ee 100644
--- a/testing/robot/lib/FDSLibrary.py
+++ b/testing/robot/lib/FDSLibrary.py
@@ -1,3 +1,12 @@
+##############################################################################
+# Copyright (c) 2016 Juraj Linkes (Cisco) and others.
+#
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Apache License, Version 2.0
+# which accompanies this distribution, and is available at
+# http://www.apache.org/licenses/LICENSE-2.0
+##############################################################################
+
from neutronclient.v2_0 import client as neutron
from novaclient import client as nova
from novaclient.exceptions import NotFound
@@ -19,6 +28,14 @@ class FDSLibrary():
os.getenv('OS_TENANT_NAME'),
os.getenv('OS_AUTH_URL'))
+ def check_flavor_exists(self, flavor):
+ flavor_list_names = [x.name for x in self.nova_client.flavors.list()]
+ return flavor in flavor_list_names
+
+ def check_image_exists(self, image):
+ image_list_names = [x.name for x in self.nova_client.images.list()]
+ return image in image_list_names
+
def create_network(self, name):
body = {'network': {'name': name}}
response = self.neutron_client.create_network(body=body)
@@ -52,16 +69,44 @@ class FDSLibrary():
response = self.neutron_client.create_port(body=body)
return response
- def create_server(self, name, image, flavor, port_ids, security_groups=None):
+ def create_server(self, name, image, flavor, port_ids, security_groups=None, userdata=None):
image = self.nova_client.images.find(name=image)
flavor = self.nova_client.flavors.find(name=flavor)
nics = [{'port-id': port_id} for port_id in port_ids]
response = self.nova_client.servers.create(name=name, image=image.id, flavor=flavor.id,
- security_groups=security_groups, nics=nics)
+ security_groups=security_groups, nics=nics,
+ userdata=userdata)
for key in dir(response):
print key, getattr(response, key)
return response
+ def format_string(self, string, substitute):
+ return string.format(substitute)
+
+ def check_server_console(self, vm_id, string):
+ vm_obj = self.nova_client.servers.get(vm_id)
+ timeout = 0
+ while timeout < 100:
+ console_out = vm_obj.get_console_output()
+ print "console output is: '{}'".format(console_out[-200:])
+ failed_to_read_metadata = 'failed to read iid from metadata'
+ if string in console_out:
+ return True
+ elif 'request failed' in console_out:
+ print 'retrying'
+ elif failed_to_read_metadata in console_out:
+ print failed_to_read_metadata
+ return False
+ timeout += 1
+ time.sleep(5)
+ return False
+
+ def create_security_group(self):
+ pass
+
+ def create_security_rule(self):
+ pass
+
def poll_server(self, vm_id, status, timeout=300):
try:
start = datetime.datetime.now()