git://git.onelab.eu
/
nodemanager-topo.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Changes for 2.6.32 kernel
[nodemanager-topo.git]
/
create-topo-attributes.py
diff --git
a/create-topo-attributes.py
b/create-topo-attributes.py
index
f0c95e2
..
78d965e
100755
(executable)
--- 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
import string
import socket
-from topology import links
+from topology import links
, bwlimits
class Node:
def __init__(self, node):
class Node:
def __init__(self, node):
@@
-61,11
+61,11
@@
class Node:
def init_rspecs(self):
self.rspecs = []
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)
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)
self.rspecs.append(rspec)
@@
-119,8
+119,8
@@
class Slice:
else:
record['node_id'] = None
tag = Slicetag(record)
else:
record['node_id'] = None
tag = Slicetag(record)
- slicetags[id] = tag
- self.slice_tag_ids.append(id)
+ slicetags[
tag.
id] = tag
+ self.slice_tag_ids.append(
tag.
id)
tag.changed = True
tag.updated = True
return tag
tag.changed = True
tag.updated = True
return tag
@@
-167,7
+167,7
@@
class Slice:
if cap == "CAP_NET_ADMIN":
return
else:
if cap == "CAP_NET_ADMIN":
return
else:
- newcaps = "CAP_NET_ADMIN," +
caps
+ newcaps = "CAP_NET_ADMIN," +
tag.value
self.update_tag('capabilities', newcaps, slicetags)
else:
self.add_tag('capabilities', 'CAP_NET_ADMIN', slicetags)
self.update_tag('capabilities', newcaps, slicetags)
else:
self.add_tag('capabilities', 'CAP_NET_ADMIN', slicetags)
@@
-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:
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:
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:
if self.node_id:
node = nodes[tag.node_id].hostname
if self.updated:
@@
-297,8
+303,8
@@
def get_slice_tags():
Find a free EGRE key
"""
def free_egre_key(slicetags):
Find a free EGRE key
"""
def free_egre_key(slicetags):
+ used = set()
for i in slicetags:
for i in slicetags:
- used = set()
tag = slicetags[i]
if tag.tagname == 'egre_key':
used.add(int(tag.value))
tag = slicetags[i]
if tag.tagname == 'egre_key':
used.add(int(tag.value))
@@
-357,6
+363,11
@@
for i in slices:
if dryrun:
print "Building virtual topology for %s" % slice.name
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
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.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
hosts += "%s\t\t%s\n" % (node.get_virt_ip(adj), node.shortname)
if node.rspecs:
topo_str = "%s" % node.rspecs
@@
-378,9
+389,10
@@
for i in slices:
print "Slice %s not using IIAS" % slice.name
if topo_type == 'manual' and slice.get_tag('egre_key', slicetags):
print "Slice %s not using IIAS" % slice.name
if topo_type == 'manual' and slice.get_tag('egre_key', slicetags):
- topo_tag = slice.get_tag('topo_rspec', slicetags)
- if topo_tag:
- topo_tag.updated = True
+ for node in slice.get_nodes(nodes):
+ topo_tag = slice.get_tag('topo_rspec', slicetags, node)
+ if topo_tag:
+ topo_tag.updated = True
# Update the tag values in the database
for i in slicetags:
# Update the tag values in the database
for i in slicetags: