Merge pull request #821 from bigchaindb/issue/780/remove-api-endpoint-setting

Removed the "api_endpoint" setting from everywhere (in this repo)
This commit is contained in:
Troy McConaghy 2016-12-06 17:33:14 +01:00 committed by GitHub
commit bd6b9da080
12 changed files with 35 additions and 43 deletions

View File

@ -17,7 +17,9 @@ WORKDIR /data
ENV BIGCHAINDB_CONFIG_PATH /data/.bigchaindb
ENV BIGCHAINDB_SERVER_BIND 0.0.0.0:9984
ENV BIGCHAINDB_API_ENDPOINT http://bigchaindb:9984/api/v1
# BigchainDB Server doesn't need BIGCHAINDB_API_ENDPOINT any more
# but maybe our Docker or Docker Compose stuff does?
# ENV BIGCHAINDB_API_ENDPOINT http://bigchaindb:9984/api/v1
ENTRYPOINT ["bigchaindb", "--dev-start-rethinkdb", "--dev-allow-temp-keypair"]

View File

@ -29,7 +29,6 @@ config = {
'port': 8125,
'rate': 0.01,
},
'api_endpoint': os.environ.get('BIGCHAINDB_API_ENDPOINT') or 'http://localhost:9984/api/v1',
'backlog_reassign_delay': 120
}

View File

@ -20,6 +20,5 @@ def home():
'software': 'BigchainDB',
'version': version.__version__,
'public_key': bigchaindb.config['keypair']['public'],
'keyring': bigchaindb.config['keyring'],
'api_endpoint': bigchaindb.config['api_endpoint']
'keyring': bigchaindb.config['keyring']
})

View File

@ -160,7 +160,7 @@ if [ "$WHAT_TO_DEPLOY" == "servers" ]; then
# bigchaindb installed, so bigchaindb configure can't be called)
# Transform the config files in the confiles directory
# to have proper keyrings, api_endpoint values, etc.
# to have proper keyrings etc.
if [ "$USE_KEYPAIRS_FILE" == "True" ]; then
python clusterize_confiles.py -k confiles $NUM_NODES
else
@ -184,8 +184,6 @@ if [ "$WHAT_TO_DEPLOY" == "servers" ]; then
echo "To start BigchainDB on all the nodes, do: fab start_bigchaindb"
else
# Deploying clients
# The only thing to configure on clients is the api_endpoint
# It should be the public DNS name of a BigchainDB server
fab send_client_confile:client_confile
# Start sending load from the clients to the servers

View File

@ -98,9 +98,6 @@ for i, filename in enumerate(conf_files):
# Allow incoming server traffic from any IP address
# to port 9984
conf_dict['server']['bind'] = '0.0.0.0:9984'
# Set the api_endpoint
conf_dict['api_endpoint'] = 'http://' + public_dns_names[i] + \
':9984/api/v1'
# Delete the config file
os.remove(file_path)

View File

@ -29,7 +29,9 @@ services:
- ./pytest.ini:/usr/src/app/pytest.ini
environment:
BIGCHAINDB_DATABASE_HOST: rdb
BIGCHAINDB_API_ENDPOINT: http://bdb:9984/api/v1
# BigchainDB Server doesn't need BIGCHAINDB_API_ENDPOINT any more
# but maybe our Docker or Docker Compose stuff does?
# BIGCHAINDB_API_ENDPOINT: http://bdb:9984/api/v1
BIGCHAINDB_SERVER_BIND: 0.0.0.0:9984
ports:
- "9984"

View File

@ -91,7 +91,6 @@ should give you something like:
```bash
{
"api_endpoint": "http://bdb:9984/api/v1",
"keyring": [],
"public_key": "Brx8g4DdtEhccsENzNNV6yvQHR8s9ebhKyXPFkWUXh5e",
"software": "BigchainDB",

View File

@ -26,17 +26,18 @@ details, see the "server" settings ("bind", "workers" and "threads") in
<../server-reference/configuration>`.
API Root
--------
API Root URL
------------
If you send an HTTP GET request to e.g. ``http://localhost:9984`` (with no
``/api/v1/`` on the end), then you should get an HTTP response with something
like the following in the body:
If you send an HTTP GET request to e.g. ``http://localhost:9984``
or ``http://apihosting4u.net:9984``
(with no ``/api/v1/`` on the end),
then you should get an HTTP response
with something like the following in the body:
.. code-block:: json
{
"api_endpoint": "http://localhost:9984/api/v1",
"keyring": [
"6qHyZew94NMmUTYyHnkZsB8cxJYuRNEiEpXHe1ih9QX3",
"AdDuyrTyjrDt935YnFu4VBCVDhHtY2Y6rcy7x2TFeiRi"
@ -46,6 +47,25 @@ like the following in the body:
"version": "0.6.0"
}
If the API endpoint is publicly-accessible,
then the public API Root URL is determined as follows:
- The public IP address (like 12.34.56.78)
is the public IP address of the machine exposing
the HTTP API to the public internet (e.g. either the machine hosting
Gunicorn or the machine running the reverse proxy such as Nginx).
It's determined by AWS, Azure, Rackspace, or whoever is hosting the machine.
- The DNS hostname (like apihosting4u.net) is determined by DNS records,
such as an "A Record" associating apihosting4u.net with 12.34.56.78
- The port (like 9984) is determined by the ``server.bind`` setting
if Gunicorn is exposed directly to the public Internet.
If a reverse proxy (like Nginx) is exposed directly to the public Internet
instead, then it could expose the HTTP API on whatever port it wants to.
(It should expose the HTTP API on port 9984, but it's not bound to do
that by anything other than convention.)
POST /transactions/
-------------------

View File

@ -167,7 +167,6 @@ Edit the created config file:
* Open `$HOME/.bigchaindb` (the created config file) in your text editor.
* Change `"server": {"bind": "localhost:9984", ... }` to `"server": {"bind": "0.0.0.0:9984", ... }`. This makes it so traffic can come from any IP address to port 9984 (the HTTP Client-Server API port).
* Change `"api_endpoint": "http://localhost:9984/api/v1"` to `"api_endpoint": "http://your_api_hostname:9984/api/v1"`
* Change `"keyring": []` to `"keyring": ["public_key_of_other_node_A", "public_key_of_other_node_B", "..."]` i.e. a list of the public keys of all the other nodes in the federation. The keyring should _not_ include your node's public key.
For more information about the BigchainDB config file, see [Configuring a BigchainDB Node](configuration.html).

View File

@ -17,7 +17,6 @@ For convenience, here's a list of all the relevant environment variables (docume
`BIGCHAINDB_SERVER_BIND`<br>
`BIGCHAINDB_SERVER_WORKERS`<br>
`BIGCHAINDB_SERVER_THREADS`<br>
`BIGCHAINDB_API_ENDPOINT`<br>
`BIGCHAINDB_STATSD_HOST`<br>
`BIGCHAINDB_STATSD_PORT`<br>
`BIGCHAINDB_STATSD_RATE`<br>
@ -141,26 +140,6 @@ export BIGCHAINDB_SERVER_THREADS=5
```
## api_endpoint
`api_endpoint` is the URL where a BigchainDB client can get access to the HTTP client-server API.
**Example using an environment variable**
```text
export BIGCHAINDB_API_ENDPOINT="http://localhost:9984/api/v1"
```
**Example config file snippet**
```js
"api_endpoint": "http://webserver.blocks587.net:9984/api/v1"
```
**Default value (from a config file)**
```js
"api_endpoint": "http://localhost:9984/api/v1"
```
## statsd.host, statsd.port & statsd.rate
These settings are used to configure where, and how often, [StatsD](https://github.com/etsy/statsd) should send data for [cluster monitoring](../clusters-feds/monitoring.html) purposes. `statsd.host` is the hostname of the monitoring server, where StatsD should send its data. `stats.port` is the port. `statsd.rate` is the fraction of transaction operations that should be sampled. It's a float between 0.0 and 1.0.

View File

@ -121,7 +121,6 @@ def test_autoconfigure_read_both_from_file_and_env(monkeypatch):
monkeypatch.setattr('bigchaindb.config_utils.file_config', lambda *args, **kwargs: file_config)
monkeypatch.setattr('os.environ', {'BIGCHAINDB_DATABASE_NAME': 'test-dbname',
'BIGCHAINDB_DATABASE_PORT': '4242',
'BIGCHAINDB_API_ENDPOINT': 'api://ipa',
'BIGCHAINDB_SERVER_BIND': '1.2.3.4:56',
'BIGCHAINDB_KEYRING': 'pubkey_0:pubkey_1:pubkey_2'})
@ -151,7 +150,6 @@ def test_autoconfigure_read_both_from_file_and_env(monkeypatch):
'port': 8125,
'rate': 0.01,
},
'api_endpoint': 'api://ipa',
'backlog_reassign_delay': 5
}

View File

@ -1,4 +1,4 @@
def test_api_endpoint_shows_basic_info(client):
def test_api_root_url_shows_basic_info(client):
from bigchaindb import version
res = client.get('/')
assert res.json['software'] == 'BigchainDB'