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.'
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)
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
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)
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)
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)
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)
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])
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)
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)
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)
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)
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'])
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)
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)
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
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.'
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)
def mac_exists(mac): device_manager = provd_connector.device_manager() existing_macs = device_manager.find({'mac': mac}) return len(existing_macs) > 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)
def generate_device_id(): device_manager = provd_connector.device_manager() try: return device_manager.add({}) except Exception as e: raise ElementCreationError('device', e)
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)
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)
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)
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)
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)