Example #1
0
 def test_get_asset_by_sn_or_barcode(self):
     category = AssetCategoryFactory()
     model = AssetModelFactory(category=category)
     asset = DCAssetFactory(model=model, )
     # by sn
     asset_data = get_asset_by_sn_or_barcode(asset.sn)
     self.assertEqual(asset_data['sn'], asset.sn)
     self.assertEqual(asset_data['barcode'], asset.barcode)
     # by barcode
     asset_data = get_asset_by_sn_or_barcode(asset.barcode)
     self.assertEqual(asset_data['sn'], asset.sn)
     self.assertEqual(asset_data['barcode'], asset.barcode)
     # not exists
     self.assertEqual(get_asset_by_sn_or_barcode('foo_ziew_123'), None)
Example #2
0
def create_deployments(data, user, mass_deployment):
    for item in data:
        mac = MACAddressField.normalize(item['mac'])
        dev = None
        try:
            dev = Device.objects.get(ethernet__mac=mac)
        except Device.DoesNotExist:
            if 'ralph_assets' in settings.INSTALLED_APPS and item[
                    'asset_identity']:
                from ralph_assets.api_ralph import get_asset_by_sn_or_barcode
                asset = get_asset_by_sn_or_barcode(item['asset_identity'])
                if asset:
                    try:
                        dev = Device.objects.get(pk=asset['device_id'])
                    except Device.DoesNotExist:
                        pass
        if not dev:
            dev = _create_device(item)
        Deployment.objects.create(
            user=user,
            device=dev,
            mac=mac,
            ip=item['ip'],
            hostname=item['hostname'],
            preboot=item['preboot'],
            venture=item['venture'],
            venture_role=item['venture_role'],
            mass_deployment=mass_deployment,
            service=ServiceCatalog.objects.get(name=item['service']),
            device_environment=DeviceEnvironment.objects.get(
                name=item['device_environment'], ),
        )
Example #3
0
def create_deployments(data, user, mass_deployment):
    for item in data:
        mac = MACAddressField.normalize(item['mac'])
        dev = None
        try:
            dev = Device.objects.get(ethernet__mac=mac)
        except Device.DoesNotExist:
            if 'ralph_assets' in settings.INSTALLED_APPS and item[
                'asset_identity'
            ]:
                from ralph_assets.api_ralph import get_asset_by_sn_or_barcode
                asset = get_asset_by_sn_or_barcode(item['asset_identity'])
                if asset:
                    try:
                        dev = Device.objects.get(pk=asset['device_id'])
                    except Device.DoesNotExist:
                        pass
        if not dev:
            dev = _create_device(item)
        Deployment.objects.create(
            user=user,
            device=dev,
            mac=mac,
            ip=item['ip'],
            hostname=item['hostname'],
            preboot=item['preboot'],
            venture=item['venture'],
            venture_role=item['venture_role'],
            mass_deployment=mass_deployment,
        )
Example #4
0
 def test_get_asset_by_sn_or_barcode(self):
     category = AssetCategoryFactory()
     model = AssetModelFactory(category=category)
     asset = DCAssetFactory(
         model=model,
     )
     # by sn
     asset_data = get_asset_by_sn_or_barcode(asset.sn)
     self.assertEqual(asset_data['sn'], asset.sn)
     self.assertEqual(asset_data['barcode'], asset.barcode)
     # by barcode
     asset_data = get_asset_by_sn_or_barcode(asset.barcode)
     self.assertEqual(asset_data['sn'], asset.sn)
     self.assertEqual(asset_data['barcode'], asset.barcode)
     # not exists
     self.assertEqual(get_asset_by_sn_or_barcode('foo_ziew_123'), None)
Example #5
0
def _find_device(mac, asset_identity=None):
    """Find the device to be re-used for this deployment. Return None if no
    matching device is found.
    """
    mac = MACAddressField.normalize(mac)
    try:
        return Device.admin_objects.get(ethernet__mac=mac)
    except Device.DoesNotExist:
        if 'ralph_assets' not in settings.INSTALLED_APPS or not asset_identity:
            return
    from ralph_assets.api_ralph import get_asset_by_sn_or_barcode
    asset = get_asset_by_sn_or_barcode(asset_identity)
    if not asset or not asset['device_id']:
        return
    try:
        return Device.objects.get(pk=asset['device_id'])
    except Device.DoesNotExist:
        return
Example #6
0
def _find_device(mac, asset_identity=None):
    """Find the device to be re-used for this deployment. Return None if no
    matching device is found.
    """
    mac = MACAddressField.normalize(mac)
    try:
        return Device.admin_objects.get(ethernet__mac=mac)
    except Device.DoesNotExist:
        if 'ralph_assets' not in settings.INSTALLED_APPS or not asset_identity:
            return
    from ralph_assets.api_ralph import get_asset_by_sn_or_barcode
    asset = get_asset_by_sn_or_barcode(asset_identity)
    if not asset or not asset['device_id']:
        return
    try:
        return Device.objects.get(pk=asset['device_id'])
    except Device.DoesNotExist:
        return
Example #7
0
def _validate_asset_identity(identity, row_number, mac=None):
    if 'ralph_assets' not in settings.INSTALLED_APPS:
        return  # nothing to do
    from ralph_assets.api_ralph import get_asset_by_sn_or_barcode
    asset = get_asset_by_sn_or_barcode(identity)
    if not asset:
        raise forms.ValidationError(
            "Row %d: Asset with sn or barcode `%s` does not exist." %
            (row_number, identity))
    if not mac or not asset['device_id']:
        return
    mac = MACAddressField.normalize(mac)
    try:
        device = Device.admin_objects.get(ethernet__mac=mac)
    except Device.DoesNotExist:
        return
    if device.id != asset['device_id']:
        raise forms.ValidationError(
            "Row %d: Found asset by sn or barcode and found device by "
            "MAC address are not the same." % row_number)
Example #8
0
def _validate_asset_identity(identity, row_number, mac=None):
    if 'ralph_assets' not in settings.INSTALLED_APPS:
        return  # nothing to do
    from ralph_assets.api_ralph import get_asset_by_sn_or_barcode
    asset = get_asset_by_sn_or_barcode(identity)
    if not asset:
        raise forms.ValidationError(
            "Row %d: Asset with sn or barcode `%s` does not exist." %
            (row_number, identity)
        )
    if not mac or not asset['device_id']:
        return
    mac = MACAddressField.normalize(mac)
    try:
        device = Device.admin_objects.get(ethernet__mac=mac)
    except Device.DoesNotExist:
        return
    if device.id != asset['device_id']:
        raise forms.ValidationError(
            "Row %d: Found asset by sn or barcode and found device by "
            "MAC address are not the same." % row_number
        )