示例#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.'
示例#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)
示例#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)
示例#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
示例#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)
示例#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)
示例#7
0
文件: dao.py 项目: jaunis/xivo-dao
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)
示例#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)
示例#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)
示例#10
0
文件: dao.py 项目: jlebleu/xivo-dao
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)
示例#11
0
文件: dao.py 项目: jaunis/xivo-dao
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
示例#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])
示例#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)
示例#14
0
文件: dao.py 项目: jaunis/xivo-dao
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)
示例#15
0
文件: dao.py 项目: jlebleu/xivo-dao
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)
示例#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])
示例#17
0
文件: dao.py 项目: jaunis/xivo-dao
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)
示例#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)
示例#19
0
文件: dao.py 项目: jlebleu/xivo-dao
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)
示例#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'])
示例#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'])
示例#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)
示例#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)
示例#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
示例#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
示例#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.'
示例#27
0
文件: dao.py 项目: jaunis/xivo-dao
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)
示例#28
0
文件: dao.py 项目: jaunis/xivo-dao
def mac_exists(mac):
    device_manager = provd_connector.device_manager()
    existing_macs = device_manager.find({'mac': mac})
    return len(existing_macs) > 0
示例#29
0
文件: dao.py 项目: jaunis/xivo-dao
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)
示例#30
0
文件: dao.py 项目: jaunis/xivo-dao
def generate_device_id():
    device_manager = provd_connector.device_manager()
    try:
        return device_manager.add({})
    except Exception as e:
        raise ElementCreationError('device', e)
示例#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)
示例#32
0
文件: dao.py 项目: jlebleu/xivo-dao
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)
示例#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)
示例#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)
示例#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)
示例#36
0
def mac_exists(mac):
    device_manager = provd_connector.device_manager()
    existing_macs = device_manager.find({'mac': mac})
    return len(existing_macs) > 0
示例#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)
示例#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)
示例#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)
示例#40
0
文件: dao.py 项目: jlebleu/xivo-dao
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)