Example #1
0
def _device_config_has_properties(channel, device_id, properties):
    from xivo_dao.helpers import provd_connector

    provd_config_manager = provd_connector.config_manager()
    provd_device_manager = provd_connector.device_manager()
    device = provd_device_manager.get(device_id)
    if 'config' in device:
        config = provd_config_manager.get(device['config'])

        assert 'sip_lines' in config[
            'raw_config'], "device does not have any SIP lines configured"

        sip_lines = config['raw_config']['sip_lines']
        sip_line = sip_lines['1']

        keys = [
            u'username', u'auth_username', u'display_name', u'password',
            u'number'
        ]
        for key in keys:
            if key in properties:
                message = u"Invalid %s ('%s' instead of '%s')" % (
                    key, sip_line[key], properties[key])
                message = message.encode('utf8')
                assert sip_line[key] == properties[key], message
    else:
        assert False, 'Device has no config key.'
Example #2
0
def _create_device(channel, deviceinfo):
    import uuid
    from xivo_dao.helpers import provd_connector

    device_manager = provd_connector.device_manager()
    config_manager = provd_connector.config_manager()

    if 'id' not in deviceinfo:
        device_id = str(uuid.uuid4())
    else:
        device_id = deviceinfo['id']

    config = {
        'id': device_id,
        'deletable': True,
        'parent_ids': ['base', deviceinfo.get('template_id', 'defaultconfigdevice')],
        'configdevice': deviceinfo.get('template_id', 'defaultconfigdevice'),
        'raw_config': {}
    }

    if 'template_id' in deviceinfo:
        del deviceinfo['template_id']

    device_manager.add(deviceinfo)
    config_manager.add(config)
Example #3
0
def _create_device(channel, deviceinfo):
    import uuid
    from xivo_dao.helpers import provd_connector

    device_manager = provd_connector.device_manager()
    config_manager = provd_connector.config_manager()

    if 'id' not in deviceinfo:
        device_id = str(uuid.uuid4())
    else:
        device_id = deviceinfo['id']

    config = {
        'id':
        device_id,
        'deletable':
        True,
        'parent_ids':
        ['base', deviceinfo.get('template_id', 'defaultconfigdevice')],
        'configdevice':
        deviceinfo.get('template_id', 'defaultconfigdevice'),
        'raw_config': {}
    }

    if 'template_id' in deviceinfo:
        del deviceinfo['template_id']

    device_manager.add(deviceinfo)
    config_manager.add(config)
Example #4
0
def _find_device_from_provd(device_id):
    device_manager = provd_connector.device_manager()
    try:
        return device_manager.get(device_id)
    except HTTPError as e:
        if e.code == 404:
            return None
        raise
Example #5
0
def link_device_config(device):
    provd_device_manager = provd_connector.device_manager()
    try:
        provd_device = provd_device_manager.get(device.id)
        provd_device['config'] = device.id
        provd_device_manager.update(provd_device)
    except Exception as e:
        raise ProvdError('error while linking config to device.', e)
Example #6
0
def link_device_config(device):
    provd_device_manager = provd_connector.device_manager()
    try:
        provd_device = provd_device_manager.get(device.id)
        provd_device['config'] = device.id
        provd_device_manager.update(provd_device)
    except Exception as e:
        raise DataError.on_action('link', 'Device', e)
Example #7
0
def _create_provd_device(device_id, provd_device):
    device_manager = provd_connector.device_manager()

    try:
        device_manager.update(provd_device)
    except Exception as e:
        device_manager.remove(device_id)
        raise ElementCreationError('device', e)
Example #8
0
def _create_provd_device(device_id, provd_device):
    device_manager = provd_connector.device_manager()

    try:
        device_manager.update(provd_device)
    except Exception as e:
        device_manager.remove(device_id)
        raise ElementCreationError('device', e)
Example #9
0
def link_device_config(device):
    provd_device_manager = provd_connector.device_manager()
    try:
        provd_device = provd_device_manager.get(device.id)
        provd_device['config'] = device.id
        provd_device_manager.update(provd_device)
    except Exception as e:
        raise ProvdError('error while linking config to device.', e)
Example #10
0
def _create_provd_device(device_id, provd_device):
    device_manager = provd_connector.device_manager()

    try:
        device_manager.update(provd_device)
    except Exception as e:
        device_manager.remove(device_id)
        raise DataError.on_create('Device', e)
Example #11
0
def _find_device_from_provd(device_id):
    device_manager = provd_connector.device_manager()
    try:
        return device_manager.get(device_id)
    except HTTPError as e:
        if e.code == 404:
            return None
        raise
Example #12
0
def _find_by_mac(channel, mac):
    from xivo_dao.helpers import provd_connector
    device_manager = provd_connector.device_manager()

    devices = device_manager.find({'mac': mac})
    if len(devices) == 0:
        channel.send(None)
    else:
        channel.send(devices[0])
Example #13
0
def _create_provd_config(device_id, provd_config):
    config_manager = provd_connector.config_manager()

    try:
        config_manager.add(provd_config)
    except Exception as e:
        device_manager = provd_connector.device_manager()
        device_manager.remove(device_id)
        raise ElementCreationError('device', e)
Example #14
0
def _create_provd_config(device_id, provd_config):
    config_manager = provd_connector.config_manager()

    try:
        config_manager.add(provd_config)
    except Exception as e:
        device_manager = provd_connector.device_manager()
        device_manager.remove(device_id)
        raise ElementCreationError('device', e)
Example #15
0
def _create_provd_config(device_id, provd_config):
    config_manager = provd_connector.config_manager()

    try:
        config_manager.add(provd_config)
    except Exception as e:
        device_manager = provd_connector.device_manager()
        device_manager.remove(device_id)
        raise DataError.on_create('Device', e)
Example #16
0
def _find_by_mac(channel, mac):
    from xivo_dao.helpers import provd_connector
    device_manager = provd_connector.device_manager()

    devices = device_manager.find({'mac': mac})
    if len(devices) == 0:
        channel.send(None)
    else:
        channel.send(devices[0])
Example #17
0
def _delete_provd_device(device):
    provd_device_manager = provd_connector.device_manager()
    try:
        provd_device_manager.remove(device.id)
    except HTTPError as e:
        if e.code == 404:
            raise ElementNotExistsError('Device', id=device.id)
        raise e
    except Exception as e:
        raise ElementDeletionError('Device', e)
Example #18
0
def _delete_provd_device(device):
    provd_device_manager = provd_connector.device_manager()
    try:
        provd_device_manager.remove(device.id)
    except HTTPError as e:
        if e.code == 404:
            raise ElementNotExistsError('Device', id=device.id)
        raise e
    except Exception as e:
        raise ElementDeletionError('Device', e)
Example #19
0
def _delete_provd_device(device):
    provd_device_manager = provd_connector.device_manager()
    try:
        provd_device_manager.remove(device.id)
    except HTTPError as e:
        if e.code == 404:
            raise errors.not_found('Device', id=device.id)
        raise e
    except Exception as e:
        raise DataError.on_delete('Device', e)
Example #20
0
def _delete_device_with_ip(channel, ip):
    from xivo_dao.helpers import provd_connector
    config_manager = provd_connector.config_manager()
    device_manager = provd_connector.device_manager()

    for device in device_manager.find({'ip': ip}):
        try:
            config_manager.remove(device['id'])
        except Exception:
            pass
        device_manager.remove(device['id'])
Example #21
0
def _delete_device_with_ip(channel, ip):
    from xivo_dao.helpers import provd_connector
    config_manager = provd_connector.config_manager()
    device_manager = provd_connector.device_manager()

    for device in device_manager.find({'ip': ip}):
        try:
            config_manager.remove(device['id'])
        except Exception:
            pass
        device_manager.remove(device['id'])
Example #22
0
def reset_to_autoprov(device):
    provd_device_manager = provd_connector.device_manager()
    try:
        provd_device = provd_device_manager.get(device.id)
        provd_device['config'] = provd_converter.generate_autoprov_config()
        provd_device.pop('options', None)
        provd_device_manager.update(provd_device)
    except Exception as e:
        raise ProvdError('error while synchronize device.', e)
    else:
        remove_all_line_from_device(device)
        line_dao.reset_device(device.id)
Example #23
0
def reset_to_autoprov(device):
    provd_device_manager = provd_connector.device_manager()
    try:
        provd_device = provd_device_manager.get(device.id)
        provd_device['config'] = provd_converter.generate_autoprov_config()
        provd_device.pop('options', None)
        provd_device_manager.update(provd_device)
    except Exception as e:
        raise DataError.on_action('reset to autoprov', 'Device', e)
    else:
        remove_all_line_from_device(device)
        line_dao.reset_device(device.id)
Example #24
0
def _delete_device(channel, device_id):
    from xivo_dao.helpers import provd_connector
    config_manager = provd_connector.config_manager()
    device_manager = provd_connector.device_manager()

    try:
        config_manager.remove(device_id)
    except Exception:
        pass
    try:
        device_manager.remove(device_id)
    except Exception:
        pass
Example #25
0
def _delete_device(channel, device_id):
    from xivo_dao.helpers import provd_connector
    config_manager = provd_connector.config_manager()
    device_manager = provd_connector.device_manager()

    try:
        config_manager.remove(device_id)
    except Exception:
        pass
    try:
        device_manager.remove(device_id)
    except Exception:
        pass
Example #26
0
def _device_config_has_properties(channel, device_id, properties):
    from xivo_dao.helpers import provd_connector

    provd_config_manager = provd_connector.config_manager()
    provd_device_manager = provd_connector.device_manager()
    device = provd_device_manager.get(device_id)
    if 'config' in device:
        config = provd_config_manager.get(device['config'])

        assert 'sip_lines' in config['raw_config'], "device does not have any SIP lines configured"

        sip_lines = config['raw_config']['sip_lines']
        sip_line = sip_lines['1']

        keys = [u'username', u'auth_username', u'display_name', u'password', u'number']
        for key in keys:
            if key in properties:
                message = u"Invalid %s ('%s' instead of '%s')" % (key, sip_line[key], properties[key])
                message = message.encode('utf8')
                assert sip_line[key] == properties[key], message
    else:
        assert False, 'Device has no config key.'
Example #27
0
def find_devices_ordered(order=None, direction=None):
    parameters = _convert_provd_parameters(order, direction)

    device_manager = provd_connector.device_manager()
    return device_manager.find(**parameters)
Example #28
0
def mac_exists(mac):
    device_manager = provd_connector.device_manager()
    existing_macs = device_manager.find({'mac': mac})
    return len(existing_macs) > 0
Example #29
0
def _update_provd_device(provd_device):
    device_manager = provd_connector.device_manager()
    try:
        device_manager.update(provd_device)
    except Exception as e:
        raise ElementEditionError('device', e)
Example #30
0
def generate_device_id():
    device_manager = provd_connector.device_manager()
    try:
        return device_manager.add({})
    except Exception as e:
        raise ElementCreationError('device', e)
Example #31
0
def find_devices_ordered(order=None, direction=None):
    parameters = _convert_provd_parameters(order, direction)

    device_manager = provd_connector.device_manager()
    return device_manager.find(**parameters)
Example #32
0
def _update_provd_device(provd_device):
    device_manager = provd_connector.device_manager()
    try:
        device_manager.update(provd_device)
    except Exception as e:
        raise DataError.on_edit('Device', e)
Example #33
0
def generate_device_id():
    device_manager = provd_connector.device_manager()
    try:
        return device_manager.add({})
    except Exception as e:
        raise ElementCreationError('device', e)
Example #34
0
def _update_provd_device(provd_device):
    device_manager = provd_connector.device_manager()
    try:
        device_manager.update(provd_device)
    except Exception as e:
        raise ElementEditionError('device', e)
Example #35
0
def _total_devices(channel):
    from xivo_dao.helpers import provd_connector

    device_manager = provd_connector.device_manager()
    total = len(device_manager.find())
    channel.send(total)
Example #36
0
def mac_exists(mac):
    device_manager = provd_connector.device_manager()
    existing_macs = device_manager.find({'mac': mac})
    return len(existing_macs) > 0
Example #37
0
def synchronize(device):
    try:
        provd_device_manager = provd_connector.device_manager()
        provd_device_manager.synchronize(device.id)
    except Exception as e:
        raise ProvdError('error while reset to autoprov.', e)
Example #38
0
def synchronize(device):
    try:
        provd_device_manager = provd_connector.device_manager()
        provd_device_manager.synchronize(device.id)
    except Exception as e:
        raise DataError.on_action('synchronize', 'Device', e)
Example #39
0
def _total_devices(channel):
    from xivo_dao.helpers import provd_connector

    device_manager = provd_connector.device_manager()
    total = len(device_manager.find())
    channel.send(total)
Example #40
0
def generate_device_id():
    device_manager = provd_connector.device_manager()
    try:
        return device_manager.add({})
    except Exception as e:
        raise DataError.on_create('Device', e)