From a53c6df31a0acdd9a0081d6ded652f6b0d734e54 Mon Sep 17 00:00:00 2001 From: Mark Huang Date: Thu, 11 Jan 2007 06:17:32 +0000 Subject: [PATCH] - GetSlivers() now returns a single struct --- conf_files.py | 7 +++--- net.py | 61 +++++++++++++++++++++++++-------------------------- proper.py | 9 ++++---- sm.py | 55 +++++++++++++++++++++++----------------------- 4 files changed, 64 insertions(+), 68 deletions(-) diff --git a/conf_files.py b/conf_files.py index f002262..d349de0 100644 --- a/conf_files.py +++ b/conf_files.py @@ -54,10 +54,9 @@ class conf_files: if self.system(cf_rec['postinstall_cmd']): self.system(err_cmd) def run_once(self, data): - for d in data: - for f in d['conf_files']: - try: self.update_conf_file(f) - except: logger.log_exc() + for f in data['conf_files']: + try: self.update_conf_file(f) + except: logger.log_exc() def run(self): while True: diff --git a/net.py b/net.py index 84cde40..bfd9113 100644 --- a/net.py +++ b/net.py @@ -15,37 +15,36 @@ def GetSlivers(data): # XXX Exempt Internet2 destinations from node bwlimits # bwlimit.exempt_init('Internet2', internet2_ips) - for d in data: - for network in d['networks']: - # Get interface name preferably from MAC address, falling - # back on IP address. - if macs.has_key(network['mac'].lower()): - dev = macs[network['mac'].lower()] - elif ips.has_key(network['ip']): - dev = ips[network['ip']] - else: - logger.log('%s: no such interface with address %s/%s' % (self.name, network['ip'], network['mac'])) - continue - - # Get current node cap - try: - old_bwlimit = bwlimit.get_bwcap(dev) - except: - old_bwlimit = None - - # Get desired node cap - if network['bwlimit'] is None or network['bwlimit'] < 0: - new_bwlimit = bwlimit.bwmax - else: - new_bwlimit = network['bwlimit'] - - if old_bwlimit != new_bwlimit: - # Reinitialize bandwidth limits - bwlimit.init(dev, new_bwlimit) - - # XXX This should trigger an rspec refresh in case - # some previously invalid sliver bwlimit is now valid - # again, or vice-versa. + for network in d['networks']: + # Get interface name preferably from MAC address, falling + # back on IP address. + if macs.has_key(network['mac'].lower()): + dev = macs[network['mac'].lower()] + elif ips.has_key(network['ip']): + dev = ips[network['ip']] + else: + logger.log('%s: no such interface with address %s/%s' % (self.name, network['ip'], network['mac'])) + continue + + # Get current node cap + try: + old_bwlimit = bwlimit.get_bwcap(dev) + except: + old_bwlimit = None + + # Get desired node cap + if network['bwlimit'] is None or network['bwlimit'] < 0: + new_bwlimit = bwlimit.bwmax + else: + new_bwlimit = network['bwlimit'] + + if old_bwlimit != new_bwlimit: + # Reinitialize bandwidth limits + bwlimit.init(dev, new_bwlimit) + + # XXX This should trigger an rspec refresh in case + # some previously invalid sliver bwlimit is now valid + # again, or vice-versa. def start(options, config): pass diff --git a/proper.py b/proper.py index a5ebd75..aad468e 100644 --- a/proper.py +++ b/proper.py @@ -17,11 +17,10 @@ def GetSlivers(data): +: unmount """.lstrip() - for d in data: - for sliver in d['slivers']: - for attribute in sliver['attributes']: - if attribute['name'] == 'proper_op': - buf += "%s: %s\n" % (sliver['name'], attribute['value']) + for sliver in data['slivers']: + for attribute in sliver['attributes']: + if attribute['name'] == 'proper_op': + buf += "%s: %s\n" % (sliver['name'], attribute['value']) try: os.makedirs("/etc/proper") except OSError: pass diff --git a/sm.py b/sm.py index 1203e64..519d2ef 100644 --- a/sm.py +++ b/sm.py @@ -50,34 +50,33 @@ def GetSlivers(data, fullupdate=True): finally: f.close() except: logger.log_exc() - for d in data: - if d['node_id'] != node_id: continue - for sliver in d['slivers']: - rec = sliver.copy() - rec.setdefault('timestamp', d['timestamp']) - - # convert attributes field to a proper dict - attr_dict = {} - for attr in rec.pop('attributes'): attr_dict[attr['name']] = attr['value'] - - # squash keys - keys = rec.pop('keys') - rec.setdefault('keys', '\n'.join([key_struct['key'] for key_struct in keys])) - - rec.setdefault('type', attr_dict.get('type', 'sliver.VServer')) - rec.setdefault('vref', attr_dict.get('vref', 'default')) - rec.setdefault('initscript', attr_dict.get('initscript', '')) - rec.setdefault('delegations', []) # XXX - delegation not yet supported - - # extract the implied rspec - rspec = {} - rec['rspec'] = rspec - for resname, default_amt in DEFAULT_ALLOCATION.iteritems(): - try: amt = int(attr_dict[resname]) - except (KeyError, ValueError): amt = default_amt - rspec[resname] = amt - database.db.deliver_record(rec) - if fullupdate: database.db.set_min_timestamp(d['timestamp']) + if data['node_id'] != node_id: continue + for sliver in data['slivers']: + rec = sliver.copy() + rec.setdefault('timestamp', data['timestamp']) + + # convert attributes field to a proper dict + attr_dict = {} + for attr in rec.pop('attributes'): attr_dict[attr['name']] = attr['value'] + + # squash keys + keys = rec.pop('keys') + rec.setdefault('keys', '\n'.join([key_struct['key'] for key_struct in keys])) + + rec.setdefault('type', attr_dict.get('type', 'sliver.VServer')) + rec.setdefault('vref', attr_dict.get('vref', 'default')) + rec.setdefault('initscript', attr_dict.get('initscript', '')) + rec.setdefault('delegations', []) # XXX - delegation not yet supported + + # extract the implied rspec + rspec = {} + rec['rspec'] = rspec + for resname, default_amt in DEFAULT_ALLOCATION.iteritems(): + try: amt = int(attr_dict[resname]) + except (KeyError, ValueError): amt = default_amt + rspec[resname] = amt + database.db.deliver_record(rec) + if fullupdate: database.db.set_min_timestamp(data['timestamp']) database.db.sync() # handle requested startup -- 2.43.0