11 from string import Template
12 import sliver_libvirt as lv
16 class Sliver_LXC(accounts.Account):
17 """This class wraps LXC commands"""
22 # Need to add a tag at myplc to actually use this account
27 def create(name, rec=None):
28 conn = lv.getConnection(URI)
30 # Template for libvirt sliver configuration
32 with open('/vservers/.lvref/config_template.xml') as f:
33 template = Template(f.read())
34 config = template.substitute(name=name)
36 logger.log('Cannot find XML template file')
39 lv.create(name, config, rec, conn)
43 conn = lv.getConnection(URI)
44 lv.destroy(name, conn)
46 def __init__(self, rec):
47 self.name = rec['name']
48 logger.verbose ('sliver_lxc: %s init'%(self.name))
50 self.dir = '/vservers/%s'%(self.name)
52 # Assume the directory with the image and config files
57 self.slice_id = rec['slice_id']
58 self.disk_usage_initialized = False
61 self.conn = lv.getConnection(URI)
63 self.container = self.conn.lookupByName(self.name)
65 logger.verbose('sliver_libvirt: Unexpected error on %s: %s'%(self.name, sys.exc_info()[0]))
67 def start(self, delay=0):
68 lv.start(self.container)
71 lv.stop(self.container)
74 lv.is_running(self.container)
76 def configure(self, rec):
77 ''' Allocate resources and fancy configuration stuff '''
78 logger.verbose('sliver_libvirt: %s configure'%(self.name))
79 accounts.Account.configure(self, rec)