From 51805b774284d99720b1f642e9a09d4d3d9ac8c9 Mon Sep 17 00:00:00 2001 From: Andy Bavier Date: Tue, 27 Apr 2010 18:14:35 +0000 Subject: [PATCH] Configure bandwidth limit for slice with auto topology creation --- create-topo-attributes.py | 23 +++++++++++++++++------ topology.py | 2 ++ 2 files changed, 19 insertions(+), 6 deletions(-) diff --git a/create-topo-attributes.py b/create-topo-attributes.py index 5f42684..78d965e 100755 --- a/create-topo-attributes.py +++ b/create-topo-attributes.py @@ -8,7 +8,7 @@ slices that have an EGRE key. This script to be run from a cron job. import string import socket -from topology import links +from topology import links, bwlimits class Node: def __init__(self, node): @@ -61,11 +61,11 @@ class Node: def init_rspecs(self): self.rspecs = [] - def add_rspec(self, remote): + def add_rspec(self, remote, bw): my_ip = self.get_virt_ip(remote) remote_ip = remote.get_virt_ip(self) net = self.get_virt_net(remote) - rspec = remote.id, remote.ipaddr, "1Mbit", my_ip, remote_ip, net + rspec = remote.id, remote.ipaddr, bw, my_ip, remote_ip, net self.rspecs.append(rspec) @@ -234,9 +234,15 @@ class Slicetag: else: AddSliceTag(self.slice_id, self.tagname, self.value, self.node_id) elif self.deleted and int(self.id) > 0: - DeleteSliceTag(self.id) + try: + DeleteSliceTag(self.id) + except: + print "[%s] %s: could not delete" % (self.id, self.tagname) else: - slice = slices[self.slice_id].name + try: + slice = slices[self.slice_id].name + except: + return if self.node_id: node = nodes[tag.node_id].hostname if self.updated: @@ -357,6 +363,11 @@ for i in slices: if dryrun: print "Building virtual topology for %s" % slice.name + if slice.name in bwlimits: + bw = bwlimits[slice.name] + else: + bw = "1Mbit" + hosts = "127.0.0.1\t\tlocalhost\n" """ For each node in the slice, check whether the slice is running on any @@ -366,7 +377,7 @@ for i in slices: node.init_rspecs() adj_nodes = node.adjacent_nodes(sites, nodes, slice.node_ids) for adj in adj_nodes: - node.add_rspec(adj) + node.add_rspec(adj, bw) hosts += "%s\t\t%s\n" % (node.get_virt_ip(adj), node.shortname) if node.rspecs: topo_str = "%s" % node.rspecs diff --git a/topology.py b/topology.py index 104100c..9ee7e41 100755 --- a/topology.py +++ b/topology.py @@ -34,3 +34,5 @@ links = [(2, 12), # I2 Princeton - New York (20, 21), # I2 Los Angeles - Seattle (20, 22), # I2 Los Angeles - Salt Lake City (21, 22)] # I2 Seattle - Salt Lake City + +bwlimits = {} -- 2.43.0