+ # Btrfs support quota per volumes
+
+ # It will depend on the FS selection
+ if rec.has_key('disk_max'):
+ disk_max = rec['disk_max']
+ if disk_max == 0:
+ # unlimited
+ pass
+ else:
+ # limit to certain number
+ pass
+
+ # Memory allocation
+ if rec.has_key('memlock_hard'):
+ mem = rec['memlock_hard'] * 1024 # hard limit in bytes
+ cgroups.write(self.name, 'memory.limit_in_bytes', mem)
+ if rec.has_key('memlock_soft'):
+ mem = rec['memlock_soft'] * 1024 # soft limit in bytes
+ cgroups.write(self.name, 'memory.soft_limit_in_bytes', mem)
+
+ # CPU allocation
+ # Only cpu_shares until figure out how to provide limits and guarantees
+ # (RT_SCHED?)
+ if rec.has_key('cpu_share'):
+ cpu_share = rec['cpu_share']
+ cgroups.write(self.name, 'cpu.shares', cpu_share)
+
+ # Call the upper configure method (ssh keys...)
+ Account.configure(self, rec)
+
+ # A placeholder until we get true VirtualInterface objects
+ @staticmethod
+ def get_interfaces_xml(rec):
+ xml = """
+ <interface type='network'>
+ <source network='default'/>
+ </interface>
+"""
+ try:
+ tags = rec['rspec']['tags']
+ if 'interface' in tags:
+ interface = eval(tags['interface'])
+ if 'vlan' in interface:
+ vlanxml = "<vlan><tag id='%s'/></vlan>" % interface['vlan']
+ else:
+ vlanxml = ""
+ if 'bridge' in interface:
+ xml = """
+ <interface type='bridge'>
+ <source bridge='%s'/>
+ %s
+ <virtualport type='openvswitch'/>
+ </interface>
+""" % (interface['bridge'], vlanxml)
+ logger.log('sliver_libvirty.py: interface XML is: %s' % xml)
+ except:
+ logger.log('sliver_libvirt.py: ERROR parsing "interface" tag for slice %s' % rec['name'])
+ logger.log('sliver_libvirt.py: tag value: %s' % tags['interface'])