Example #1
0
def run(experiment, expiration, site_name, groups, hw_type, img, with_lan):

    site = sites.get(site_name, None)
    if not site:
        raise Exception('Unknown site name: {}'.format(site_name))

    if len(sys.argv) != 2:
        raise Exception(
            "Expecting only 1 argument: apply, destroy, renew or inventory")
    cmd = sys.argv[1]

    out_dir = os.getcwd()

    if cmd == 'get-inventory':
        print('Creating Ansible inventory from GENI manifest.')
        geni_out_dir = out_dir + '/geni'
        ansible_out_dir = out_dir + '/ansible'
        if not os.path.isdir(geni_out_dir):
            os.makedirs(geni_out_dir)
        if not os.path.isdir(ansible_out_dir):
            os.makedirs(ansible_out_dir)
        manifest_path = geni_out_dir + '/manifest.xml'
        util.xmlManifestToAnsibleInventory(manifest_path,
                                           groups=groups,
                                           hostsfile=ansible_out_dir +
                                           '/hosts',
                                           format='yaml')
        sys.exit(0)

    # load context
    ctx = util.loadCtx()

    if cmd == 'destroy':
        util.deleteSliverExists(site, ctx, experiment)
        sys.exit(0)

    # create slice
    util.createSlice(ctx,
                     experiment,
                     expiration=expiration,
                     renew_if_exists=True)

    if cmd == 'renew':
        sys.exit(0)

    if cmd != 'apply':
        print("Unknown command '{}'".format(cmd))
        sys.exit(1)

    request = create_request(img, hw_type, groups, with_lan)

    # create sliver on selected site
    manifest = util.createSliver(ctx, site, experiment, request)

    # write manifest
    manifest.writeXML(out_dir + '/geni/manifest.xml')
Example #2
0
    node.disk_image = img
    node.hardware_type = hardware_type
    return node

experiment_name = 'popper-test' + str( randint( 0, 9999) )
img = "urn:publicid:IDN+wisconsin.cloudlab.us+image+emulab-ops//UBUNTU18-64-STD"

request = pg.Request()
request.addResource(baremetal_node("client0", img, 'c220g5'))
request.addResource(baremetal_node("osd0", img, 'c220g5'))

# load context
ctx = util.loadContext(key_passphrase=os.environ['GENI_KEY_PASSPHRASE'])

# create slice
util.createSlice(ctx, experiment_name, renew_if_exists=True)

# create sliver on emulab
manifest = util.createSliver(ctx, cloudlab.Wisconsin, experiment_name, request)

# grouping inventory
groups = {
  'osds': ['osd0'],
  'clients': ['client0']
}

# output files: ansible inventory and GENI manifest
outdir = os.path.dirname(os.path.realpath(__file__))
util.toAnsibleInventory(manifest, groups=groups, hostsfile=outdir+'/hosts')
manifest.writeXML(outdir+'/manifest.xml')
Example #3
0
ctx = util.loadCtx()

if command == 'apply':
    # create request
    # {
    node = pg.RawPC("node")
    node.disk_image = ("urn:publicid:IDN+clemson.cloudlab.us+image+"
                       "schedock-PG0:ubuntu18-docker")
    node.hardware_type = 'c6320'

    request = pg.Request()
    request.addResource(node)
    # }

    # create slice
    util.createSlice(ctx, experiment_name)

    # create sliver on clemson
    manifest = util.createSliver(ctx, cloudlab.Clemson, experiment_name,
                                 request)

    print(manifest.text)

elif command == 'destroy':

    print("Available slices: {}".format(ctx.cf.listSlices(ctx).keys()))

    if util.sliceExists(ctx, experiment_name):
        print('Slice exists.')
        print('Removing all existing slivers (errors are ignored)')
        util.deleteSliverExists(cloudlab.Clemson, ctx, experiment_name)
Example #4
0
# Create the raw "PC" nodes
for _idx in range(0, node_count):
    node = request.RawPC('node_{}'.format(_idx))
    node.hardware_type = str(os.environ['NODE_HARDWARE'])
    node_list.append(node)

# Create a link between them
link1 = request.Link(members=node_list)

# load context
ctx = util.loadContext(path="/geni-context.json",
                       key_passphrase=os.environ['GENI_KEY_PASSPHRASE'])

# create slice
util.createSlice(ctx, slice_name, 300, True)

# identify the cluster
cluster = str(os.environ['NODE_CLUSTER'])
if cluster == 'utah':
    cluster = cloudlab.Utah

elif cluster == 'wisconsin':
    cluster = cloudlab.Wisconsin

elif cluster == 'clemson':
    cluster = cloudlab.Clemson

# create sliver
manifest = util.createSliver(ctx, cluster, slice_name, request)
Example #5
0
import os

from geni.aggregate import cloudlab
from geni.rspec import pg
from geni import util

# create request
# {
node = pg.RawPC("node")

node.disk_image = "urn:publicid:IDN+clemson.cloudlab.us+image+schedock-PG0:ubuntu18-docker"
node.hardware_type = 'c6320'

request = pg.Request()
request.addResource(node)
# }

# load context
ctx = util.loadContext(key_passphrase=os.environ['GENI_KEY_PASSPHRASE'])

# create slice
util.createSlice(ctx, 'popperized')

# create sliver on clemson
manifest = util.createSliver(ctx, cloudlab.Clemson, 'popperized', request)

print(manifest.text)