# -*- coding: utf-8 -*- ''' This code is to test geni-lib by Xuan Liu July 7, 2014 ''' import xliu_config import geni.aggregate.instageni as ig import geni.aggregate.exogeni as eg import geni.rspec.pg as pg # User context information CONTEXT = xliu_config.buildContext() def get_am_sites(am_type): """ get a list of sites of a specific aggregate type ig: instageni eg: exogeni """ am_list = [] if am_type == 'ig': for idx, site in enumerate(ig.aggregates()): #print idx, site am_list.append(site) elif am_type == 'eg': for idx, site in enumerate(eg.aggregates()): am_list.append(site) return am_list def get_res(context, ig_site): '''Get resource of a ig site, and print to a file ''' try: ad = ig_site.listresources(context) f = open("%s-ad.xml" % (ig_site.name), "w+") f.write(ad.text) f.close() print "[%s] Done" % (ig_site.name) except: print "[%s] OFFLINE" % (ig_site.name) def two_nodes_rspec(context): ''' Create an RSpec for a simple two-node link''' # provide the slicename slicename = 'xuan-genilib' # delete previous sliver #ig.UtahDDC.deletesliver(context, "xuan-genilib") # create RSpec object rspec = pg.Request() # create node1 vm1 = pg.XenVM("node1") vm1_iface1 = vm1.addInterface("if0") vm1_iface1.component_id = "eth1" vm1.disk_image = 'https://www.emulab.net/image_metadata.php?uuid=bea6f9b2-f59b-11e3-8053-001143e453fe' rspec.addResource(vm1) # create node2 vm2 = pg.XenVM("node2") vm2_iface1 = vm2.addInterface("if0") vm2_iface1.component_id = "eth1" vm2.disk_image = 'https://www.emulab.net/image_metadata.php?uuid=bea6f9b2-f59b-11e3-8053-001143e453fe' rspec.addResource(vm2) # create link node2 <--> node1 link = pg.Link() link.addInterface(vm1_iface1) link.addInterface(vm2_iface1) rspec.addResource(link) # create RSpec xml file rspec.write("test.xml") # create sliver manifest = ig.UtahDDC.createsliver(context, slicename, rspec) print manifest.text def deletesliver(context, am, slicename): '''Delete slivers from a AM in a Slice''' am.deletesliver(context, slicename) def custom_image_rspec(context): '''Create RSpec with custom disk image''' slicename = 'xuan-genilib' am = ig.Clemson rspec = pg.Request() vm1 = pg.XenVM("node1") vm1_iface1 = vm1.addInterface("if0") vm1_iface1.component_id = "eth1" vm1_iface1.addAddress(pg.IPv4Address('192.168.1.1', '255.255.255.0')) vm1.disk_image = 'https://www.emulab.net/image_metadata.php?uuid=bea6f9b2-f59b-11e3-8053-001143e453fe' vm1.addService(pg.Install(url="http://geni-myvini.umkc.gpeni.net/resources/experiments/xorp_autostart.tar.gz", path="/local")) vm1.addService(pg.Install(url="http://geni-myvini.umkc.gpeni.net/resources/experiments/xorp_run.tar.gz", path="/local")) vm1.addService(pg.Execute(shell="bash", command="/bin/bash /local/xorp_autostart/start-xorp.sh")) rspec.addResource(vm1) # create node2 vm2 = pg.XenVM("node2") vm2_iface1 = vm2.addInterface("if0") vm2_iface1.component_id = "eth1" vm2_iface1.addAddress(pg.IPv4Address('192.168.1.2', '255.255.255.0')) vm2.disk_image = 'https://www.emulab.net/image_metadata.php?uuid=bea6f9b2-f59b-11e3-8053-001143e453fe' vm2.addService(pg.Install(url="http://geni-myvini.umkc.gpeni.net/resources/experiments/xorp_autostart.tar.gz", path="/local")) vm2.addService(pg.Install(url="http://geni-myvini.umkc.gpeni.net/resources/experiments/xorp_run.tar.gz", path="/local")) vm2.addService(pg.Execute(shell="bash", command="/bin/bash /local/xorp_autostart/start-xorp.sh")) rspec.addResource(vm2) # create link node2 <--> node1 link = pg.LAN('lan0') link.addInterface(vm1_iface1) link.addInterface(vm2_iface1) rspec.addResource(link) rspec.write("test.xml") # create slivers manifest = am.createsliver(context, slicename, rspec) print manifest.text