Example #1
0
 def setUp(self):
     super().setUp()
     port = self.service_port(9489, 'dird')
     dird_config = {
         'host': '127.0.0.1',
         'port': port,
         'token': VALID_TOKEN_MAIN_TENANT,
         'prefix': None,
         'https': False,
     }
     self.client = DirdClient(**dird_config)
     self.source = self.client.backends.create_source(backend=self.BACKEND,
                                                      body=self.config())
     self.display = self.client.displays.create({
         'name':
         'display',
         'columns': [{
             'field': 'firstname'
         }]
     })
     self.profile = self.client.profiles.create({
         'name': 'default',
         'display': self.display,
         'services': {
             'lookup': {
                 'sources': [self.source]
             }
         },
     })
     self.auth_client_mock = AuthMock(host='0.0.0.0',
                                      port=self.service_port(9497, 'auth'))
     self.auth_client_mock.set_external_auth(self.MICROSOFT_EXTERNAL_AUTH)
Example #2
0
    def load(self, dependencies):
        app = dependencies['app']
        dird_client = DirdClient(**dependencies['config']['dird'])
        auth_client = AuthClient(**dependencies['config']['auth'])
        token_changed_subscribe = dependencies['token_changed_subscribe']
        token_changed_subscribe(dird_client.set_token)
        token_changed_subscribe(auth_client.set_token)
        dependencies['phone_plugins'].append(self)
        class_kwargs = {
            'vendor': self.vendor,
            'dird_client': dird_client,
            'auth_client': auth_client,
        }
        api = create_blueprint_api(
            app, '{}_plugin'.format(self.vendor), self.import_name
        )

        self.menu_url = self.menu_url_fmt.format(vendor=self.vendor)
        self.input_url = self.input_url_fmt.format(vendor=self.vendor)
        self.lookup_url = self.lookup_url_fmt.format(vendor=self.vendor)

        self.directories_menu_url = self.directories_menu_url_fmt.format(
            vendor=self.vendor
        )
        self.directories_input_url = self.directories_input_url_fmt.format(
            vendor=self.vendor
        )
        self.directories_lookup_url = self.directories_lookup_url_fmt.format(
            vendor=self.vendor
        )
        self._add_resources(api, class_kwargs)
Example #3
0
def get_wazo_dird_client():
    client = g.get('wazo_dird_client')
    if not client:
        client = g.wazo_confd_client = DirdClient(**app.config['dird'])
        client.set_token(current_user.get_id())
        client.set_tenant(current_user.get_tenant_uuid())
    add_tenant_to(client)
    return client
Example #4
0
 def make_dird(cls, token):
     return DirdClient(
         '127.0.0.1',
         cls.service_port(9489, 'dird'),
         prefix=None,
         https=False,
         token=token,
     )
Example #5
0
 def _configure_auth(cls):
     cls.auth = MockAuthClient('127.0.0.1', cls.service_port(9497, 'auth'))
     main_tenant_token = MockUserToken.some_token(metadata={
         'uuid': 'my-user-uuid',
         'tenant_uuid': MAIN_TENANT
     })
     cls.auth.set_token(main_tenant_token)
     cls.main_tenant_token = main_tenant_token.token_id
     cls.dird = DirdClient('127.0.0.1',
                           cls.service_port(9489, 'dird'),
                           prefix=None,
                           https=False)
     cls.dird.set_token(cls.main_tenant_token)
Example #6
0
    def load(self, dependencies):
        app = dependencies['app']
        amid_client = AmidClient(**dependencies['config']['amid'])
        auth_client = AuthClient(**dependencies['config']['auth'])
        confd_client = ConfdClient(**dependencies['config']['confd'])
        dird_client = DirdClient(**dependencies['config']['dird'])
        token_changed_subscribe = dependencies['token_changed_subscribe']
        token_changed_subscribe(amid_client.set_token)
        token_changed_subscribe(auth_client.set_token)
        token_changed_subscribe(confd_client.set_token)
        token_changed_subscribe(dird_client.set_token)

        service = YealinkService(amid_client, confd_client)
        self.service = service

        dependencies['phone_plugins'].append(self)

        bus_consumer = dependencies['bus_consumer']
        bus_event_handler = BusEventHandler(service)
        bus_event_handler.subscribe(bus_consumer)

        directories_class_kwargs = {
            'vendor': self.vendor,
            'dird_client': dird_client,
            'auth_client': auth_client,
        }
        user_service_class_kwargs = {
            'service': service,
        }

        api = create_blueprint_api(app, '{}_plugin'.format(self.vendor),
                                   self.import_name)

        self.lookup_url = self.lookup_url_fmt.format(vendor=self.vendor)

        self.directories_lookup_url = self.directories_lookup_url_fmt.format(
            vendor=self.vendor)

        self.user_service_dnd_enable_url = self.user_service_dnd_enable_url_fmt.format(
            vendor=self.vendor)
        self.user_service_dnd_disable_url = (
            self.user_service_dnd_disable_url_fmt.format(vendor=self.vendor))
        self._add_resources(api, directories_class_kwargs)
        self._add_user_service_resources(api, user_service_class_kwargs)
def test_csv_import():
    auth_client = AuthClient(constants.HOST,
                             verify_certificate=False,
                             username='******',
                             password='******')
    dird_client = DirdClient(constants.HOST,
                             https=True,
                             verify_certificate=False,
                             timeout=MAX_TIME)

    token_data = auth_client.token.new(expiration=300)
    token = token_data['token']
    auth_client.set_token(token)

    try:
        auth_client.users.new(
            username=USERNAME,
            password=PASSWORD,
            tenant_uuid=token_data['metadata']['tenant_uuid'],
        )
    except requests.HTTPError as e:
        if e.response.status_code == 409:
            pass
        else:
            raise

    user_auth_client = AuthClient(
        constants.HOST,
        verify_certificate=False,
        username=USERNAME,
        password=PASSWORD,
    )
    token = user_auth_client.token.new('wazo_user', expiration=300)['token']

    result, time_to_complete = upload_csv(dird_client, token)

    assert 'created' in result, 'The result does not contain created contacts'
    assert len(result['created']
               ) == 1000, 'expected 1000 created contacts: {}'.format(
                   len(result['created']))
    assert time_to_complete < MAX_TIME, 'The import took too long {}s > {}s'.format(
        time_to_complete, MAX_TIME)
Example #8
0
def main():
    cli_config = _parse_args()
    file_config = read_config_file_hierarchy(
        ChainMap(cli_config, _DEFAULT_CONFIG))
    key_config = _load_key_file(
        ChainMap(cli_config, file_config, _DEFAULT_CONFIG))
    config = ChainMap(cli_config, key_config, file_config, _DEFAULT_CONFIG)

    setup_logging(config['logfile'], debug=config['debug'])
    silence_loggers(['urllib3'], logging.WARNING)

    user = config.get('user')
    if user:
        change_user(user)

    xivo_dao.init_db_from_config(config)

    token_renewer = TokenRenewer(AuthClient(**config['auth']))
    config['agentd']['client'] = AgentdClient(**config['agentd'])
    config['calld']['client'] = CalldClient(**config['calld'])
    config['confd']['client'] = ConfdClient(**config['confd'])
    config['dird']['client'] = DirdClient(**config['dird'])
    config['auth']['client'] = AuthClient(**config['auth'])

    def on_token_change(token_id):
        config['agentd']['client'].set_token(token_id)
        config['calld']['client'].set_token(token_id)
        config['confd']['client'].set_token(token_id)
        config['dird']['client'].set_token(token_id)
        config['auth']['client'].set_token(token_id)

    token_renewer.subscribe_to_token_change(on_token_change)

    agid.init(config)
    with token_renewer:
        agid.run()
Example #9
0
 def get_client(cls, token=VALID_TOKEN_MAIN_TENANT):
     return DirdClient(cls.host,
                       cls.port,
                       token=token,
                       prefix=None,
                       https=False)
Example #10
0
def setup_dird_client(context):
    context.dird_client = DirdClient(**context.wazo_config['dird'])
    context.dird_client.set_token(context.token)
    context.token_pubsub.subscribe('new-token-id',
                                   context.dird_client.set_token)