Skip to content

Instantly share code, notes, and snippets.

@shaon
Last active August 29, 2015 13:57
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save shaon/31092065dcc3deeb4079 to your computer and use it in GitHub Desktop.
Save shaon/31092065dcc3deeb4079 to your computer and use it in GitHub Desktop.
## need to bundle an instance before running this test,
## there's too much hard coded data
#!/usr/bin/python
import time
from eucaops import Eucaops
from eutester.eutestcase import EutesterTestCase
import os
import re
class InstanceBasics(EutesterTestCase):
def __init__(self):
#### Pre-conditions
self.setuptestcase()
self.setup_parser()
self.parser.add_argument("--build-number")
self.get_args()
# Setup basic eutester object
self.tester = Eucaops( config_file=self.args.config, password=self.args.password )
self.reservation = None
### Generate a group for the instance
self.group = self.tester.add_group(group_name="inst-kvm-grp-" + str(time.time()).replace(".", "") + self.tester.id_generator() + "-" + self.args.build_number)
self.tester.authorize_group_by_name(group_name=self.group.name)
self.tester.authorize_group_by_name(group_name=self.group.name, port=-1, protocol="icmp" )
### Generate a keypair for the instance
self.keypair_name = "inst-kvm-" + str(time.time()).replace(".", "") + self.tester.id_generator() + "-" + self.args.build_number
self.keypair = self.tester.add_keypair(self.keypair_name)
### Get an image to work with
self.emi = ""
self.clc = self.tester.get_component_machines( "clc" )
self.clc_component = self.clc[0]
self.image = self.tester.get_emi( self.get_new_emi( ) )
def clean_method(self):
"""
Description: Attempts to clean up resources created in this test
"""
self.tester.cleanup_artifacts()
def get_new_emi(self):
bucket_name = "precise" + str(int(time.time()))
bundledmanifest = "/var/tmp/bundle-MiX3mR/precise-server-cloudimg-amd64-disk1.img.manifest.xml"
cmd_upload = "source /root/eucarc-10.111.5.83-eucalyptus-admin/eucarc && euca-upload-bundle -b " + bucket_name + " -m " + bundledmanifest
out = self.clc_component.cmd( cmd_upload, listformat=True )
for line in out['output']:
line = str(line)
if re.search('Uploaded', line) and re.search('manifest', line):
uploadedmanifest = line.split().pop()
break
image_name = bucket_name + "img"
cmd_register = "source /root/eucarc-10.111.5.83-eucalyptus-admin/eucarc && euca-register -n " + image_name + " --virtualization-type hvm " + uploadedmanifest
out = self.clc_component.sys(cmd=cmd_register, code=0)
for line in out:
if re.search('IMAGE',line):
self.emi = line.split().pop().strip()
return self.emi
def DeregisterEmi(self):
cmd_deregister = "source /root/eucarc-10.111.5.83-eucalyptus-admin/eucarc && euca-deregister " + self.emi
self.clc_component.sys(cmd=cmd_deregister, code=0)
def MyTest(self):
"""
Description: This test will simply run an instance and check that it is reachable via ssh.
"""
self.reservation = self.tester.run_instance(self.image, zone="PARTI00", min=1, max=1,keypair=self.keypair_name, group=self.group, timeout=600)
for instance in self.reservation.instances:
assert self.tester.ping(instance.public_dns_name)
if __name__ == "__main__":
testcase = InstanceBasics()
### Use the list of tests passed from config/command line to determine what subset of tests to run
### or use a predefined list
list = testcase.args.tests or [ "MyTest", "DeregisterEmi"]
### Convert test suite methods to EutesterUnitTest objects
unit_list = [ ]
for test in list:
unit_list.append( testcase.create_testunit_by_name(test) )
### Run the EutesterUnitTest objects
result = testcase.run_test_case_list(unit_list,clean_on_exit=True)
exit(result)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment