def test_generate_filename_and_macs_no_sysname(self): items = [('network', 'eth0', 'serial', 'aa:bb:cc')] self.assertEqual(matcher.generate_filename_and_macs(items), {'serial': ['aa:bb:cc'], 'eth': ['eth0'], 'sysname': 'aa-bb-cc', })
def test_generate_filename_and_macs_no_sysname(self): items = [('network', 'eth0', 'serial', 'aa:bb:cc')] self.assertEqual(matcher.generate_filename_and_macs(items), { 'serial': ['aa:bb:cc'], 'eth': ['eth0'], 'sysname': 'aa-bb-cc', })
def test_generate_filename_and_macs(self): items = [('system', 'product', 'serial', 'Sysname'), ('network', 'eth0', 'serial', 'mac')] self.assertEqual(matcher.generate_filename_and_macs(items), {'sysname': 'Sysname-mac', 'sysserial': 'Sysname', 'eth': ['eth0'], 'serial': ['mac'], })
def test_generate_filename_and_macs(self): items = [('system', 'product', 'serial', 'Sysname'), ('network', 'eth0', 'serial', 'mac')] self.assertEqual( matcher.generate_filename_and_macs(items), { 'sysname': 'Sysname-mac', 'sysserial': 'Sysname', 'eth': ['eth0'], 'serial': ['mac'], })
def test_generate_filename_and_macs_virtualbox(self): items = [('disk', 'sda', 'size', '8'), ('system', 'product', 'serial', '0'), ('system', 'product', 'name', 'VirtualBox ()'), ('system', 'product', 'vendor', 'innotek GmbH'), ('system', 'product', 'version', '1.2'), ('system', 'memory', 'size', '521113600'), ('network', 'eth0', 'serial', '08:00:27:6f:77:22'), ('network', 'eth0', 'vendor', 'Intel Corporation'), ('network', 'eth0', 'product', '82540EM Gigabit Ethernet Controller'), ('network', 'eth0', 'size', '1000000000'), ('network', 'eth0', 'ipv4', '10.0.2.15'), ('network', 'eth0', 'link', 'yes'), ('network', 'eth0', 'driver', 'e1000'), ('system', 'cpu', 'number', '1')] result = matcher.generate_filename_and_macs(items) self.assertTrue('serial' in result, result) self.assertTrue('eth' in result, result)
def test_generate_filename_and_macs_virtualbox(self): items = [('disk', 'sda', 'size', '8'), ('system', 'product', 'serial', '0'), ('system', 'product', 'name', 'VirtualBox ()'), ('system', 'product', 'vendor', 'innotek GmbH'), ('system', 'product', 'version', '1.2'), ('system', 'memory', 'size', '521113600'), ('network', 'eth0', 'serial', '08:00:27:6f:77:22'), ('network', 'eth0', 'vendor', 'Intel Corporation'), ('network', 'eth0', 'product', '82540EM Gigabit Ethernet Controller'), ('network', 'eth0', 'size', '1000000000'), ('network', 'eth0', 'ipv4', '10.0.2.15'), ('network', 'eth0', 'link', 'yes'), ('network', 'eth0', 'driver', 'e1000'), ('system', 'cpu', 'number', '1')] result = matcher.generate_filename_and_macs(items) self.assertEqual(result['sysname'], 'VirtualBox-0-08-00-27-6f-77-22') self.assertEqual(result['serial'], ['08:00:27:6f:77:22']) self.assertEqual(result['eth'], ['eth0'])
for info in json_hw_items: hw_items.append(tuple(map(encode, info))) # avoid concurrent accesses lock_filename = config_get(section, 'LOCKFILE', '/var/run/httpd/edeploy.lock') state_obj = state.State(lockname=lock_filename) state_obj.load(cfg_dir) def cleanup(): 'Remove lock.' state_obj.unlock() atexit.register(cleanup) filename_and_macs = matcher.generate_filename_and_macs(hw_items) save_hw(hw_items, filename_and_macs['sysname'], hw_dir) use_pxemngr = (config_get(section, 'USEPXEMNGR', False) == 'True') pxemngr_url = config_get(section, 'PXEMNGRURL', None) metadata_url = config_get(section, 'METADATAURL', None) if use_pxemngr: register_pxemngr(filename_and_macs) if failure_role: if state_obj.failed_profile(failure_role): state_obj.save() sys.exit(0) try:
json_hw_items = json.loads(hw_file.read(-1)) except Exception, excpt: upload.fatal_error("'Invalid hardware file: %s'" % str(excpt)) def encode(elt): 'Encode unicode strings as strings else return the object' try: return elt.encode('ascii', 'ignore') except AttributeError: return elt hw_items = [] for info in json_hw_items: hw_items.append(tuple(map(encode, info))) filename_and_macs = matcher.generate_filename_and_macs(hw_items) dirname = time.strftime("%Y_%m_%d-%Hh%M", time.localtime()) if form.getvalue('session'): dest_dir = (cfg_dir + os.path.basename(form.getvalue('session')) + '/' + dirname) else: dest_dir = cfg_dir + '/' + dirname try: if not os.path.isdir(dest_dir): os.makedirs(dest_dir) except OSError, e: upload.fatal_error("Cannot create %s directory (%s)" % (dest_dir, e.errno))