Beispiel #1
0
def create_farm(farm_name):
    """
    Create a farm. Creates a farm named FARM_NAME on the currently selected
    cloud server. You can use the `openag cloud select_farm` command to start
    mirroring data into it.
    """
    utils.check_for_cloud_server()
    utils.check_for_cloud_user()
    server = Server(config["cloud_server"]["url"])
    username = config["cloud_server"]["username"]
    password = config["cloud_server"]["password"]
    server.log_in(username, password)
    url = urljoin(server.resource.url, "_openag", "v0.1", "register_farm")
    status, _, content = server.resource.session.request(
        "POST",
        url,
        headers=server.resource.headers.copy(),
        body={
            "name": username,
            "farm_name": farm_name
        },
        credentials=(username, password))
    if status != 200:
        raise click.ClickException(
            "Failed to register farm with cloud server ({}): {}".format(
                status, content))
Beispiel #2
0
def login(username, password):
    """ Log into your user account """
    check_for_cloud_server()
    old_username = config["cloud_server"]["username"]
    if old_username and old_username != username:
        raise click.ClickException(
            "Already logged in as user \"{}\". Run `openag cloud user logout` "
            "before attempting to log in as a different user".format(
                old_username))
    server = Server(config["cloud_server"]["url"])
    server.log_in(username, password)
    config["cloud_server"]["username"] = username
    config["cloud_server"]["password"] = password
Beispiel #3
0
def login(username, password):
    """ Log into your user account """
    check_for_cloud_server()
    old_username = config["cloud_server"]["username"]
    if old_username and old_username != username:
        raise click.ClickException(
            "Already logged in as user \"{}\". Run `openag cloud user logout` "
            "before attempting to log in as a different user".format(
                old_username
            )
        )
    server = Server(config["cloud_server"]["url"])
    server.log_in(username, password)
    config["cloud_server"]["username"] = username
    config["cloud_server"]["password"] = password
Beispiel #4
0
def list_farms():
    """
    List all farms you can manage. If you have selected a farm already, the
    name of that farm will be prefixed with an asterisk in the returned list.
    """
    utils.check_for_cloud_server()
    utils.check_for_cloud_user()
    server = Server(config["cloud_server"]["url"])
    server.log_in(config["cloud_server"]["username"],
                  config["cloud_server"]["password"])
    farms_list = server.get_user_info().get("farms", [])
    if not len(farms_list):
        raise click.ClickException(
            "No farms exist. Run `openag cloud create_farm` to create one")
    active_farm_name = config["cloud_server"]["farm_name"]
    for farm_name in farms_list:
        if farm_name == active_farm_name:
            click.echo("*" + farm_name)
        else:
            click.echo(farm_name)
Beispiel #5
0
def list_farms():
    """
    List all farms you can manage. If you have selected a farm already, the
    name of that farm will be prefixed with an asterisk in the returned list.
    """
    utils.check_for_cloud_server()
    utils.check_for_cloud_user()
    server = Server(config["cloud_server"]["url"])
    server.log_in(
        config["cloud_server"]["username"], config["cloud_server"]["password"]
    )
    farms_list = server.get_user_info().get("farms", [])
    if not len(farms_list):
        raise click.ClickException(
            "No farms exist. Run `openag cloud create_farm` to create one"
        )
    active_farm_name = config["cloud_server"]["farm_name"]
    for farm_name in farms_list:
        if farm_name == active_farm_name:
            click.echo("*"+farm_name)
        else:
            click.echo(farm_name)
Beispiel #6
0
def test_get_user_info():
    server = Server("http://test.test:5984")

    # Try to get user info -- Should fail
    try:
        server.get_user_info()
        assert False, "Server.get_user_info should fail when not logged in"
    except RuntimeError as e:
        pass

    def on_get_session(request, uri, headers):
        credentials = request.headers.getheader("Authorization")
        if credentials.startswith("Basic "):
            username, password = b64decode(credentials[6:]).split(":")
            if username == "test" and password == "test":
                return 200, headers, '{"test": "test"}'
        return 401, headers, '{"test": "test"}'

    httpretty.register_uri(httpretty.GET,
                           "http://test.test:5984/_session",
                           body=on_get_session,
                           content_type="application/json")
    server.log_in("test", "test")
    httpretty.register_uri(httpretty.HEAD, "http://test.test:5984/_users")
    httpretty.register_uri(
        httpretty.GET,
        "http://test.test:5984/_users/org.couchdb.user%3Atest",
        body='{"test": "test"}',
        content_type="application/json")
    res = server.get_user_info()
    assert server.get_user_info() == {"test": "test"}
    server.log_out()
    try:
        server.get_user_info()
        assert False, "Shouldn't be able to access the user's info when not logged in"
    except RuntimeError:
        pass
def test_get_user_info():
    server = Server("http://test.test:5984")

    # Try to get user info -- Should fail
    try:
        server.get_user_info()
        assert False, "Server.get_user_info should fail when not logged in"
    except RuntimeError as e:
        pass

    def on_get_session(request, uri, headers):
        credentials = request.headers.getheader("Authorization")
        if credentials.startswith("Basic "):
            username, password = b64decode(credentials[6:]).split(":")
            if username == "test" and password == "test":
                return 200, headers, '{"test": "test"}'
        return 401, headers, '{"test": "test"}'
    httpretty.register_uri(
        httpretty.GET, "http://test.test:5984/_session", body=on_get_session,
        content_type="application/json"
    )
    server.log_in("test", "test")
    httpretty.register_uri(
        httpretty.HEAD, "http://test.test:5984/_users"
    )
    httpretty.register_uri(
        httpretty.GET, "http://test.test:5984/_users/org.couchdb.user%3Atest",
        body='{"test": "test"}', content_type="application/json"
    )
    res = server.get_user_info()
    assert server.get_user_info() == {"test": "test"}
    server.log_out()
    try:
        server.get_user_info()
        assert False, "Shouldn't be able to access the user's info when not logged in"
    except RuntimeError:
        pass
Beispiel #8
0
def create_farm(farm_name):
    """
    Create a farm. Creates a farm named FARM_NAME on the currently selected
    cloud server. You can use the `openag cloud select_farm` command to start
    mirroring data into it.
    """
    utils.check_for_cloud_server()
    utils.check_for_cloud_user()
    server = Server(config["cloud_server"]["url"])
    username = config["cloud_server"]["username"]
    password = config["cloud_server"]["password"]
    server.log_in(username, password)
    url = urljoin(server.resource.url, "_openag", "v0.1", "register_farm")
    status, _, content = server.resource.session.request(
        "POST", url, headers=server.resource.headers.copy(), body={
            "name": username, "farm_name": farm_name
        }, credentials=(username, password)
    )
    if status != 200:
        raise click.ClickException(
            "Failed to register farm with cloud server ({}): {}".format(
                status, content
            )
        )