Changeset cc8d8e9 for fedd/federation/topdl.py
- Timestamp:
- Aug 28, 2009 6:07:42 PM (15 years ago)
- Branches:
- axis_example, compt_changes, info-ops, master, version-2.00, version-3.01, version-3.02
- Children:
- 6c57fe9
- Parents:
- 4c8a0b7
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
fedd/federation/topdl.py
r4c8a0b7 rcc8d8e9 48 48 class Capacity(base): 49 49 def __init__(self, rate, kind): 50 self.rate = rate50 self.rate = float(rate) 51 51 self.kind = kind 52 52 … … 55 55 56 56 def to_dict(self): 57 return { 'rate': self.rate, 'kind': self.kind }57 return { 'rate': float(self.rate), 'kind': self.kind } 58 58 59 59 class Latency(base): 60 60 def __init__(self, time, kind): 61 self.time = time61 self.time = float(time) 62 62 self.kind = kind 63 63 … … 66 66 67 67 def to_dict(self): 68 return { 'time': self.time, 'kind': self.kind }68 return { 'time': float(self.time), 'kind': self.kind } 69 69 70 70 class Substrate(base): … … 117 117 class Storage(base): 118 118 def __init__(self, amount, persistence, attribute=[]): 119 if isinstance(amount, basestring): 120 self.amount = float(amount) 121 else: 122 self.amount = amount 119 self.amount = float(amount) 123 120 self.presistence = persistence 124 121 self.attribute = [ self.init_class(Attribute, a) \ … … 411 408 f = open(filename, "r") 412 409 xp.ParseFile(f) 410 f.close() 413 411 elif file: 414 412 xp.ParseFile(file) … … 455 453 456 454 for eidx, e in enumerate(t.elements): 457 n = { }458 455 if e.name: name = e.name[0] 459 456 else: name = "unnamed_node%d" % eidx 460 457 461 458 ips = [ ] 462 for i in e.interfaces:459 for idx, i in enumerate(e.interface): 463 460 ip = i.get_attribute('ip4_address') 464 461 ips.append(ip) … … 490 487 }) 491 488 492 nodes.append(n) 493 return { 'vtopo': { 'node': node, 'lan': lan } } 489 return { 'node': nodes, 'lan': lans } 490 491 def topology_to_ns2(t): 492 out = """ 493 set ns [new Simulator] 494 source tb_compat.tcl 495 496 """ 497 for e in t.elements: 498 rpms = "" 499 tarfiles = "" 500 if isinstance(e, Computer): 501 name = e.name[0] 502 out += "set %s [$ns node]\n" % name 503 if e.os and len(e.os) == 1: 504 osid = e.os[0].get_attribute('osid') 505 if osid: 506 out += "tb-set-node-os $%s %s\n" % (name, osid) 507 for s in e.software: 508 if s.install: 509 tarfiles += "%s %s " % (s.install, s.location) 510 else: 511 rpms += "%s " % s.location 512 if rpms: 513 out += "tb-set-node-rpms $%s %s\n" % (name, rpms) 514 if tarfiles: 515 out += "tb-set-node-tarfiles $%s %s\n" % (name, tarfiles) 516 startcmd = e.get_attribute('startup') 517 if startcmd: 518 out+= 'tb-set-node-startcmd $%s "%s"\n' % (name, startcmd) 519 out+= "\n" 520 521 for idx, s in enumerate(t.substrates): 522 loss = s.get_attribute('loss') 523 if s.latency: 524 delay = s.latency.time 525 else: 526 delay = 0 527 name = s.name or "sub%d" % idx 528 529 if len(s.interfaces) > 2: 530 # Lan 531 members = [ i.element.name[0] for i in s.interfaces] 532 out += 'set %s [$ns make-lan "%s" %f %fms ]\n' % \ 533 (name, " ".join(members), s.capacity.rate, delay) 534 if loss: 535 "tb-set-lan-loss $%s %f\n" % (name, float(loss)) 536 537 for i in s.interfaces: 538 e = i.element 539 ip = e.get_attribute("ip4_address") 540 if ip: 541 out += "tb-set-ip-lan $%s $%s %s\n" % (e.name, name, ip) 542 if i.capacity and i.capacity.rate != s.capacity.rate: 543 out += "tb-set-node-lan-bandwidth $%s $%s %f\n" % \ 544 (e.name[0], name, i.capacity.rate) 545 if i.latency and i.latency.time != delay: 546 out += "tb-set-node-lan-delay $%s $%s %fms\n" % \ 547 (e.name[0], name, i.latency.time) 548 iloss = i.get_attribute('loss') 549 if loss and iloss != loss : 550 out += "tb-set-node-lan-loss $%s $%s %f" % \ 551 (e.name[0], name, float(loss)) 552 out+= "\n" 553 elif len(s.interfaces) == 2: 554 f = s.interfaces[0] 555 t = s.interfaces[1] 556 557 out += "set %s [$ns duplex-link $%s $%s %f %fms DropTail]\n" %\ 558 (name, f.element.name[0], t.element.name[0], 559 s.capacity.rate, delay) 560 if loss: 561 out += "tb-set-link-loss $%s %f\n" % (name, float(loss)) 562 563 for i in s.interfaces: 564 lloss = i.get_attribute("loss") 565 cap_override = i.capacity and \ 566 i.capacity.rate != s.capacity.rate 567 delay_override = i.latency and \ 568 i.latency.time != delay 569 loss_override = lloss and lloss != loss 570 if cap_override or delay_override or loss_override: 571 if i.capacity: cap = i.capacity.rate 572 else: cap = s.capacity.rate 573 574 if i.latency: delay = i.latency.time 575 576 if lloss: loss = lloss 577 else: loss = loss or 0.0 578 579 out += "tb-set-link-simplex-params $%s $%s %fms %f %f\n" % \ 580 (name, i.element.name[0], delay, cap, loss) 581 out+= "\n" 582 out+=""" 583 $ns run 584 """ 585 return out
Note: See TracChangeset
for help on using the changeset viewer.