Beispiel #1
0
def _join(client, network):
    """Join the given network.

    Args:
        client (two1.server.rest_client.TwentyOneRestClient) an object
            for sending authenticated requests to the TwentyOne
            backend
        network (str): the name of the network being joined. Defaults
        to 21market

    Raises:
        ServerRequestError: if server returns an error code other than 401
    """
    try:
        # ensures the zerotier daemon is running
        zerotier.start_daemon()
        zt_device_address = zerotier.device_address()
        response = client.join(network, zt_device_address)
        if response.ok:
            network_id = response.json().get("networkid")
            zerotier.join_network(network_id)
            logger.info(uxstring.UxString.successful_join.format(click.style(network, fg="magenta")))
            return {'joined': True}
    except exceptions.ServerRequestError as e:
        if e.status_code == 400:
            logger.info(uxstring.UxString.invalid_network)
            return {'joined': False, 'reason': 'invalid network'}
        else:
            raise e
    except subprocess.CalledProcessError as e:
        logger.info(str(e))
        return {'joined': False, 'reason': str(e)}
Beispiel #2
0
def _leave(client, network):
    """Join the given network.

    Args:
        client (two1.server.rest_client.TwentyOneRestClient) an object
            for sending authenticated requests to the TwentyOne
            backend
        network (str): the name of the network being joined. Defaults
        to 21market
    """
    # ensures the zerotier daemon is running
    zerotier.start_daemon()
    is_in_network = False
    for ntwk in zerotier.list_networks():
        if ntwk['name'] == network:
            is_in_network = True
            nwid = ntwk['nwid']
            break
    if not is_in_network:
        logger.info('not in network')
        return {'left': False, 'reason': 'not in network'}
    try:
        zerotier.leave_network(nwid)
        logger.info(uxstring.UxString.successful_leave.format(click.style(network, fg="magenta")))
        return {'left': True}
    except subprocess.CalledProcessError as e:
        logger.info(str(e))
        return {'left': False, 'reason': str(e)}
Beispiel #3
0
def _join(client, network):
    """Join the given network.

    Args:
        client (two1.server.rest_client.TwentyOneRestClient) an object
            for sending authenticated requests to the TwentyOne
            backend
        network (str): the name of the network being joined. Defaults
        to 21market

    Raises:
        ServerRequestError: if server returns an error code other than 401
    """
    try:
        # ensures the zerotier daemon is running
        zerotier.start_daemon()
        zt_device_address = zerotier.device_address()
        response = client.join(network, zt_device_address)
        if response.ok:
            network_id = response.json().get("networkid")
            zerotier.join_network(network_id)
            logger.info(
                uxstring.UxString.successful_join.format(
                    click.style(network, fg="magenta")))
            return {'joined': True}
    except exceptions.ServerRequestError as e:
        if e.status_code == 400:
            logger.info(uxstring.UxString.invalid_network)
            return {'joined': False, 'reason': 'invalid network'}
        else:
            raise e
    except subprocess.CalledProcessError as e:
        logger.info(str(e))
        return {'joined': False, 'reason': str(e)}
Beispiel #4
0
def _leave(client, network):
    """Join the given network.

    Args:
        client (two1.server.rest_client.TwentyOneRestClient) an object
            for sending authenticated requests to the TwentyOne
            backend
        network (str): the name of the network being joined. Defaults
        to 21market
    """
    # ensures the zerotier daemon is running
    zerotier.start_daemon()
    is_in_network = False
    for ntwk in zerotier.list_networks():
        if ntwk['name'] == network:
            is_in_network = True
            nwid = ntwk['nwid']
            break
    if not is_in_network:
        logger.info('not in network')
        return {'left': False, 'reason': 'not in network'}
    try:
        zerotier.leave_network(nwid)
        logger.info(
            uxstring.UxString.successful_leave.format(
                click.style(network, fg="magenta")))
        return {'left': True}
    except subprocess.CalledProcessError as e:
        logger.info(str(e))
        return {'left': False, 'reason': str(e)}
Beispiel #5
0
def test_start_daemon(is_installed_mock, which_mock, system_mock,
                      check_output_mock, which_side_effect,
                      system_return_value, cmd, outcome):
    """ Tests various platforms and sytem configs if the daemon can be started """
    which_mock.side_effect = which_side_effect
    system_mock.return_value = system_return_value
    is_installed_mock.return_value = True

    if isinstance(outcome, str):
        check_output_mock.return_value = outcome
        assert zerotier.start_daemon() == outcome
        if outcome:
            check_output_mock.assert_called_once_with(cmd)
    else:
        check_output_mock.side_effect = outcome
        with pytest.raises(outcome):
            zerotier.start_daemon()
Beispiel #6
0
def test_start_daemon(
        is_installed_mock, which_mock, system_mock, check_output_mock,
        which_side_effect, system_return_value, cmd, outcome):
    """ Tests various platforms and sytem configs if the daemon can be started """
    which_mock.side_effect = which_side_effect
    system_mock.return_value = system_return_value
    is_installed_mock.return_value = True

    if isinstance(outcome, str):
        check_output_mock.return_value = outcome
        assert zerotier.start_daemon() == outcome
        if outcome:
            check_output_mock.assert_called_once_with(cmd)
    else:
        check_output_mock.side_effect = outcome
        with pytest.raises(outcome):
            zerotier.start_daemon()