Example #1
0
def handle_lshw_fibre_cards(dev, lshw, is_virtual=False, priority=0):
    buses = []
    for bus in jpath.get_all('..bus', lshw):
        if not bus:
            continue
        if isinstance(bus, list):
            buses.extend(bus)
        else:
            buses.append(bus)
    buses = filter(lambda item: item['id'].startswith('fiber'), buses)
    buses.sort(key=lambda item: item['handle'])
    handled_buses = set()
    detected_fc_cards = set()
    for bus in buses:
        handle = unicode(bus['handle'])
        m = re.search(r"([1-9][0-9]*)", handle)
        if not m:
            continue
        physid = m.group(1)
        if physid in handled_buses:
            continue
        fib, created = FibreChannel.concurrent_get_or_create(
            device=dev, physical_id=physid)
        fib.label = "{} {}".format(bus['vendor'], bus['product'])
        fib.model, c = ComponentModel.create(
            ComponentType.fibre,
            family=bus['vendor'],
            name=bus['product'],
            priority=priority,
        )
        fib.save(priority=priority)
        handled_buses.add(physid)
        detected_fc_cards.add(fib.pk)
    dev.fibrechannel_set.exclude(pk__in=detected_fc_cards).delete()
Example #2
0
def handle_lshw_fibre_cards(dev, lshw, is_virtual=False, priority=0):
    buses = []
    for bus in jpath.get_all('..bus', lshw):
        if not bus:
            continue
        if isinstance(bus, list):
            buses.extend(bus)
        else:
            buses.append(bus)
    buses = filter(lambda item: item['id'].startswith('fiber'), buses)
    buses.sort(key=lambda item: item['handle'])
    handled_buses = set()
    detected_fc_cards = set()
    for bus in buses:
        handle = unicode(bus['handle'])
        m = re.search(r"([1-9][0-9]*)", handle)
        if not m:
            continue
        physid = m.group(1)
        if physid in handled_buses:
            continue
        fib, created = FibreChannel.concurrent_get_or_create(device=dev,
            physical_id=physid)
        fib.label = "{} {}".format(bus['vendor'], bus['product'])
        extra = fib.label
        fib.model, c = ComponentModel.concurrent_get_or_create(
            type=ComponentType.fibre.id, family=bus['vendor'],
            extra_hash=hashlib.md5(extra).hexdigest())
        fib.model.extra = extra
        fib.model.name = bus['product']
        fib.model.save(priority=priority)
        fib.save(priority=priority)
        handled_buses.add(physid)
        detected_fc_cards.add(fib.pk)
    dev.fibrechannel_set.exclude(pk__in=detected_fc_cards).delete()
Example #3
0
File: lshw.py Project: pijany/ralph
def handle_lshw_fibre_cards(dev, lshw, is_virtual=False, priority=0):
    buses = []
    for bus in jpath.get_all('..bus', lshw):
        if not bus:
            continue
        if isinstance(bus, list):
            buses.extend(bus)
        else:
            buses.append(bus)
    buses = filter(lambda item: item['id'].startswith('fiber'), buses)
    buses.sort(key=lambda item: item['physid'])
    handled_buses = set()
    for bus in buses:
        physid = unicode(bus['physid'])
        for handled in handled_buses:
            if physid.startswith(handled):
                break
        else:
            fib, created = FibreChannel.concurrent_get_or_create(device=dev,
                physical_id=physid)
            fib.label = "{} {}".format(bus['vendor'], bus['product'])
            extra = fib.label
            fib.model, c = ComponentModel.concurrent_get_or_create(
                type=ComponentType.fibre.id, family=bus['vendor'],
                            extra_hash=hashlib.md5(extra).hexdigest(),
                            extra=extra)
            fib.model.name = bus['product']
            fib.model.save(priority=priority)
            fib.save(priority=priority)
        handled_buses.add(physid)
Example #4
0
def handle_lshw_fibre_cards(dev, lshw, is_virtual=False, priority=0):
    buses = []
    for bus in jpath.get_all("..bus", lshw):
        if not bus:
            continue
        if isinstance(bus, list):
            buses.extend(bus)
        else:
            buses.append(bus)
    buses = filter(lambda item: item["id"].startswith("fiber"), buses)
    buses.sort(key=lambda item: item["handle"])
    handled_buses = set()
    detected_fc_cards = set()
    for bus in buses:
        handle = unicode(bus["handle"])
        m = re.search(r"([1-9][0-9]*)", handle)
        if not m:
            continue
        physid = m.group(1)
        if physid in handled_buses:
            continue
        fib, created = FibreChannel.concurrent_get_or_create(device=dev, physical_id=physid)
        fib.label = "{} {}".format(bus["vendor"], bus["product"])
        fib.model, c = ComponentModel.create(
            ComponentType.fibre, family=bus["vendor"], name=bus["product"], priority=priority
        )
        fib.save(priority=priority)
        handled_buses.add(physid)
        detected_fc_cards.add(fib.pk)
    dev.fibrechannel_set.exclude(pk__in=detected_fc_cards).delete()
Example #5
0
def save_fibre_channel(fcs, dev):
    detected_fc_cards = []
    for f in fcs:
        pid = f.get("physicalid")
        model = f.get("model")
        manufacturer = f.get("manufacturer")
        fib, created = FibreChannel.concurrent_get_or_create(device=dev, physical_id=pid)
        fib.label = f.get("label")
        fib.model, c = ComponentModel.create(
            ComponentType.fibre, family=manufacturer or fib.label, name=model or fib.label, priority=SAVE_PRIORITY
        )
        fib.save(priority=SAVE_PRIORITY)
        detected_fc_cards.append(fib.pk)
    dev.fibrechannel_set.exclude(pk__in=detected_fc_cards).delete()
Example #6
0
def _save_fc_cards(dev, data):
    detected_fc_cards = []
    for card in data:
        model, _ = ComponentModel.create(
            ComponentType.fibre,
            family=card['label'],
            name=card['label'],
            priority=SAVE_PRIORITY,
        )
        fc, _ = FibreChannel.concurrent_get_or_create(
            device=dev, physical_id=card['physical_id'])
        fc.model = model
        fc.label = card['label']
        fc.save(priority=SAVE_PRIORITY)
        detected_fc_cards.append(fc.pk)
    dev.fibrechannel_set.exclude(pk__in=detected_fc_cards).delete()
Example #7
0
 def test_fc(self):
     model = ComponentModel(
         type=ComponentType.fibre,
         name="FC-336",
     )
     model.save()
     FibreChannel(
         physical_id='deadbeefcafe',
         label='ziew',
         device=self.device,
         model=model,
     ).save()
     data = get_device_data(Device.objects.get(sn='123456789'))
     fc = data['fibrechannel_cards']
     self.assertEqual(len(fc), 1)
     self.assertEqual(fc[0]['physical_id'], 'deadbeefcafe')
     self.assertEqual(fc[0]['model_name'], 'FC-336')
Example #8
0
def _save_fc_cards(dev, data):
    detected_fc_cards = []
    for card in data:
        model, _ = ComponentModel.create(
            ComponentType.fibre,
            family=card['label'],
            name=card['label'],
            priority=SAVE_PRIORITY,
        )
        fc, _ = FibreChannel.concurrent_get_or_create(
            device=dev, physical_id=card['physical_id']
        )
        fc.model = model
        fc.label = card['label']
        fc.save(priority=SAVE_PRIORITY)
        detected_fc_cards.append(fc.pk)
    dev.fibrechannel_set.exclude(pk__in=detected_fc_cards).delete()
Example #9
0
def save_fibre_channel(fcs, dev):
    detected_fc_cards = []
    for f in fcs:
        pid = f.get('physicalid')
        model = f.get('model')
        manufacturer = f.get('manufacturer')
        fib, created = FibreChannel.concurrent_get_or_create(device=dev,
                                                             physical_id=pid)
        fib.label = f.get('label')
        fib.model, c = ComponentModel.create(
            ComponentType.fibre,
            family=manufacturer or fib.label,
            name=model or fib.label,
            priority=SAVE_PRIORITY,
        )
        fib.save(priority=SAVE_PRIORITY)
        detected_fc_cards.append(fib.pk)
    dev.fibrechannel_set.exclude(pk__in=detected_fc_cards).delete()
Example #10
0
def save_fibre_channel(fcs, dev):
    detected_fc_cards = []
    for f in fcs:
        pid = f.get('physicalid')
        model = f.get('model')
        manufacturer = f.get('manufacturer')
        fib, created = FibreChannel.concurrent_get_or_create(device=dev,
                                                             physical_id=pid)
        fib.label = f.get('label')
        extra = '%s %s %s %s' % (fib.label, pid, manufacturer, model)
        fib.model, c = ComponentModel.concurrent_get_or_create(
            type=ComponentType.fibre.id, family=fib.label,
            extra_hash=hashlib.md5(extra.encode('utf-8')).hexdigest())
        fib.model.extra = extra
        fib.model.name = model if model else fib.label
        fib.model.save(priority=SAVE_PRIORITY)
        fib.save(priority=SAVE_PRIORITY)
        detected_fc_cards.append(fib.pk)
    dev.fibrechannel_set.exclude(pk__in=detected_fc_cards).delete()
Example #11
0
def save_fibre_channel(fcs, dev):
    detected_fc_cards = []
    for f in fcs:
        pid = f.get('physicalid')
        model = f.get('model')
        manufacturer = f.get('manufacturer')
        fib, created = FibreChannel.concurrent_get_or_create(device=dev,
                                                             physical_id=pid)
        fib.label = f.get('label')
        extra = '%s %s %s %s' % (fib.label, pid, manufacturer, model)
        fib.model, c = ComponentModel.concurrent_get_or_create(
            type=ComponentType.fibre.id,
            family=fib.label,
            extra_hash=hashlib.md5(extra.encode('utf-8')).hexdigest())
        fib.model.extra = extra
        fib.model.name = model if model else fib.label
        fib.model.save(priority=SAVE_PRIORITY)
        fib.save(priority=SAVE_PRIORITY)
        detected_fc_cards.append(fib.pk)
    dev.fibrechannel_set.exclude(pk__in=detected_fc_cards).delete()