From: Stephen Soltesz Date: Thu, 12 May 2011 21:46:01 +0000 (-0400) Subject: Add isolated_loopback slice tag support. X-Git-Tag: nodemanager-2.0-32~2 X-Git-Url: http://git.onelab.eu/?p=nodemanager.git;a=commitdiff_plain;h=610ad5a25d5338c8318bf06a5c63a35da1f9e33a Add isolated_loopback slice tag support. --- diff --git a/accounts.py b/accounts.py index 74afcff..2f3bb32 100644 --- a/accounts.py +++ b/accounts.py @@ -137,7 +137,7 @@ If still valid, check if running and configure/start if not.""" if next_class != curr_class: self._destroy(curr_class) create_sem.acquire() - try: next_class.create(self.name, rec['vref']) + try: next_class.create(self.name, rec) finally: create_sem.release() if not isinstance(self._acct, next_class): self._acct = next_class(rec) logger.verbose("accounts.ensure_created: %s, running=%r"%(self.name,self.is_running())) diff --git a/logrotate/nodemanager b/logrotate/nodemanager index 8fd2d3f..8c9f289 100644 --- a/logrotate/nodemanager +++ b/logrotate/nodemanager @@ -10,6 +10,7 @@ copytruncate compress weekly + notifempty rotate 5 missingok } diff --git a/sliver_vs.py b/sliver_vs.py index 9914433..0b15e25 100644 --- a/sliver_vs.py +++ b/sliver_vs.py @@ -64,7 +64,7 @@ class Sliver_VS(accounts.Account, vserver.VServer): logger.log_exc("sliver_vs:__init__ (first chance) %s",name=name) logger.log('sliver_vs: %s: recreating bad vserver' % name) self.destroy(name) - self.create(name, rec['vref']) + self.create(name, rec) logger.log("sliver_vs: %s: second chance..."%name) vserver.VServer.__init__(self, name,logfile='/var/log/nodemanager') @@ -77,8 +77,9 @@ class Sliver_VS(accounts.Account, vserver.VServer): self.configure(rec) @staticmethod - def create(name, vref = None): + def create(name, rec = None): logger.verbose('sliver_vs: %s: create'%name) + vref = rec['vref'] if vref is None: logger.log("sliver_vs: %s: ERROR - no vref attached, this is unexpected"%(name)) # added by caglar @@ -109,8 +110,11 @@ class Sliver_VS(accounts.Account, vserver.VServer): personality="linux64" return personality + extra = "" + if 'attributes' in rec and 'isolate_loopback' in rec['attributes'] and rec['attributes']['isolate_loopback'] == '1': + extra = "-i" # logger.log_call(['/usr/sbin/vuseradd', '-t', vref, name, ], timeout=15*60) - logger.log_call(['/bin/bash','-x','/usr/sbin/vuseradd', '-t', vref, name, ], timeout=15*60) + logger.log_call(['/bin/bash','-x','/usr/sbin/vuseradd', extra, '-t', vref, name, ], timeout=15*60) # export slicename to the slice in /etc/slicename file('/vservers/%s/etc/slicename' % name, 'w').write(name) file('/vservers/%s/etc/slicefamily' % name, 'w').write(vref) @@ -312,7 +316,10 @@ class Sliver_VS(accounts.Account, vserver.VServer): if self.rspec['ip_addresses'] != '0.0.0.0': logger.log('sliver_vs: %s: setting IP address(es) to %s' % \ (self.name, self.rspec['ip_addresses'])) - self.set_ipaddresses_config(self.rspec['ip_addresses']) + add_loopback = True + if 'isolate_loopback' in self.rspec['tags']: + add_loopback = self.rspec['tags']['isolate_loopback'] != "1" + self.set_ipaddresses_config(self.rspec['ip_addresses'], add_loopback) #logger.log("sliver_vs: %s: Setting name to %s" % (self.name, self.slice_id)) #self.setname(self.slice_id)