示例#1
0
 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',
                       })
示例#2
0
 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',
     })
示例#3
0
 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'],
                       })
示例#4
0
 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'],
         })
示例#5
0
 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)
示例#6
0
 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'])
示例#7
0
    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:
示例#8
0
        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))