</machine>
</drl>"""
-def start(options, conf):
- logger.log('drl plugin starting up...')
+def start():
+ logger.log('drl plugin starting up...')
def DRLSetup(site_name, slice_name, site_id, bw_limit, peer):
- DRL_file = '/vservers/%s/etc/drl.xml' % slice_name
- DRL_config = drl % (site_name, site_id, bw_limit, peer)
-
- # Check config changes
- if os.path.exists(DRL_file):
- import md5
- new_digest = md5.new(DRL_config).digest()
- old_digest = md5.new(open(DRL_file).read()).digest()
- if old_digest == new_digest:
- logger.log('drl: %s already exists...' % DRL_file)
- DRLInstall(slice_name)
- return
- DRLConfig(DRL_file, DRL_config)
- DRLInstall(slice_name)
+ DRL_file = '/vservers/%s/etc/drl.xml' % slice_name
+ DRL_config = drl % (site_name, site_id, bw_limit, peer)
+
+ # Check config changes
+ if os.path.exists(DRL_file):
+ import md5
+ new_digest = md5.new(DRL_config).digest()
+ old_digest = md5.new(open(DRL_file).read()).digest()
+ if old_digest == new_digest:
+ logger.log('drl: %s already exists...' % DRL_file)
+ DRLInstall(slice_name)
+ return
+ DRLConfig(DRL_file, DRL_config)
+ DRLInstall(slice_name)
def DRLConfig(DRL_file, DRL_config):
- logger.log('drl: %s is out-dated...' % DRL_file)
- logger.log('drl: generating %s' % DRL_file)
- f = open( DRL_file, 'w')
- f.write(DRL_config)
- f.close()
+ logger.log('drl: %s is out-dated...' % DRL_file)
+ logger.log('drl: generating %s' % DRL_file)
+ f = open( DRL_file, 'w')
+ f.write(DRL_config)
+ f.close()
def DRLInstall(slice_name):
- if not os.path.exists('/vservers/%s/etc/yum.repos.d/myplc.repo' % slice_name):
- shutil.copyfile('/etc/yum.myplc.d/myplc.repo', '/vservers/%s/etc/yum.repos.d/myplc.repo' % slice_name)
- logger.log('drl: installing DistributedRateLimiting into %s slice' % slice_name)
- logger.log_call('vserver', '%s' % slice_name, 'suexec', '0', 'yum', 'install', '-y', '-q', 'DistributedRateLimiting')
- logger.log_call('vserver', '%s' % slice_name, 'suexec', '0', 'chkconfig', '--add', 'ulogd')
- else:
- logger.log('drl: installing DistributedRateLimiting into %s slice' % slice_name)
- logger.log_call('vserver', '%s' % slice_name, 'suexec', '0', 'yum', 'update', '-y', '-q', 'DistributedRateLimiting')
-
- logger.log('drl: (re)starting DistributedRateLimiting service')
- logger.log_call('vserver', '%s' % slice_name, 'suexec', '0', 'service', 'ulogd', 'restart')
+ if not os.path.exists('/vservers/%s/etc/yum.repos.d/myplc.repo' % slice_name):
+ shutil.copyfile('/etc/yum.myplc.d/myplc.repo', '/vservers/%s/etc/yum.repos.d/myplc.repo' % slice_name)
+ logger.log('drl: installing DistributedRateLimiting into %s slice' % slice_name)
+ logger.log_call(['vserver', '%s' % slice_name, 'suexec', '0', 'yum', 'install', '-y', '-q', 'DistributedRateLimiting'])
+ logger.log_call(['vserver', '%s' % slice_name, 'suexec', '0', 'chkconfig', '--add', 'ulogd'])
+ else:
+ logger.log('drl: updating DistributedRateLimiting on %s slice' % slice_name)
+ logger.log_call(['vserver', '%s' % slice_name, 'suexec', '0', 'yum', 'update', '-y', '-q', 'DistributedRateLimiting'])
+
+ logger.log('drl: (re)starting DistributedRateLimiting service')
+ logger.log_call(['vserver', '%s' % slice_name, 'suexec', '0', 'service', 'ulogd', 'restart'])
def GetSlivers(data, conf = None, plc = None):
- DRL_SLICE_NAME = ''
- HAVE_DRL = 0
- node_id = tools.node_id()
-
- for sliver in data['slivers']:
- for attribute in sliver['attributes']:
- tag = attribute['tagname']
- value = attribute['value']
- if tag == 'drl' and value == '1':
- HAVE_DRL = 1
- DRL_SLICE_NAME = sliver['name']
-
- if HAVE_DRL:
- site_id = plc.GetNodes({'node_id': int(node_id) }, ['site_id'])
- site_id = site_id[0]['site_id']
-
- q = plc.GetSites({'site_id': site_id, 'enabled': True, 'peer_site_id': None}, ['name', 'node_ids'])
- for i in q:
- if i['node_ids'] != [] and len(i['node_ids']) > 1:
- z = plc.GetInterfaces({'node_id': i['node_ids'], 'is_primary': True, '~bwlimit': None}, ['node_id', 'ip', 'bwlimit'])
- total_bwlimit = 0
- peer = ''
- node_has_bwlimit = 0
- for j in range(len(z)):
- total_bwlimit += z[j]['bwlimit']
- if z[j]['node_id'] != int(node_id):
- peer += '\t<peer>%s</peer>\n' % z[j]['ip']
- else:
- node_has_bwlimit = 1
- if node_has_bwlimit:
- DRLSetup(i['name'], DRL_SLICE_NAME, site_id, total_bwlimit/1000, peer)
- else:
- logger.log('drl: This node has no bwlimit')
-
- else:
- logger.log('drl: This site has only %s node' % len(i['node_ids']))
- else:
- logger.log('drl: This node has no drl slice!...')
+ DRL_SLICE_NAME = ''
+ HAVE_DRL = 0
+ node_id = tools.node_id()
+
+ if 'slivers' not in data:
+ logger.log_missing_data("drl.GetSlivers",'slivers')
+ return
+
+ for sliver in data['slivers']:
+ for attribute in sliver['attributes']:
+ tag = attribute['tagname']
+ value = attribute['value']
+ if tag == 'drl' and value == '1':
+ HAVE_DRL = 1
+ DRL_SLICE_NAME = sliver['name']
+
+ if HAVE_DRL:
+ site_id = plc.GetNodes({'node_id': int(node_id) }, ['site_id'])
+ site_id = site_id[0]['site_id']
+
+ q = plc.GetSites({'site_id': site_id, 'enabled': True, 'peer_site_id': None}, ['name', 'node_ids'])
+ for i in q:
+ if i['node_ids'] != [] and len(i['node_ids']) > 1:
+ z = plc.GetInterfaces({'node_id': i['node_ids'], 'is_primary': True, '~bwlimit': None}, ['node_id', 'ip', 'bwlimit'])
+ total_bwlimit = 0
+ peer = ''
+ node_has_bwlimit = 0
+ for j in range(len(z)):
+ total_bwlimit += z[j]['bwlimit']
+ if z[j]['node_id'] != int(node_id):
+ peer += '\t<peer>%s</peer>\n' % z[j]['ip']
+ else:
+ node_has_bwlimit = 1
+ if node_has_bwlimit:
+ DRLSetup(i['name'], DRL_SLICE_NAME, site_id, total_bwlimit/1000, peer)
+ else:
+ logger.log('drl: This node has no bwlimit')
+
+ else:
+ logger.log('drl: This site has only %s node' % len(i['node_ids']))
+ else:
+ logger.log('drl: This node has no drl slice!...')