Introduction
etcdgo is a library to push/pull configurations inside etcd databases. Supported filetypes are the following:
- JSON
- Yaml
- INI
Usage example:
import etcd3
import etcdgo
client = etcd3.Etcd3Client(host='127.0.0.1', port=4003)
# push a json configuration inside database
config = etcdgo.get_config(client, "json")
config.push("myconfig", "myfile.json")
# push a yaml configuration inside database
config = etcdgo.get_config(client, "yaml")
config.push("myconfig", "myfile.yaml")
# push a ini configuration inside database
config = etcdgo.get_config(client, "ini")
config.push("myconfig", "myfile.ini")
# pull data from etcd database
data = config.pull("myconfig")
To install the library:
pip install etcdgo
Push/pull via command line
etcdgo library contains a tool called etcdgo-cli which can be used to
push/pull configurations inside an etcd database.
# push ini configuration
$ etcdgo-cli \
--hostname 10.0.1.21 \
--port 2379 \
--basefile /configs \
push pytest0 pytest.ini
# pull configuration
$ etcdgo-cli \
--hostname 10.0.1.21 \
--port 2379 \
--basefile /configs \
pull --output-type=ini pytest0
[pytest]
addopts = -vv -s
log_cli = True
log_level = DEBUG
etcdgo-cli will automatically recognize the file extension and push it as
needed, but pull command needs to specify the output type, via --output-type
option.
How data is stored
Before pushing configurations inside an etcd database, all files are converted
into a dictionary and then flatten. The basefolder is given to the configuration
object and it's the root of our configurations.
For example:
import etcd3
import etcdgo
client = etcd3.Etcd3Client(host='127.0.0.1', port=4003)
config = etcdgo.get_config(client, "ini", basefolder="/configs")
config.push("foods", "myconfig.ini")
Our myconfig.ini configuration:
[apple]
color = red
taste = sweet
[coffee]
color = black
taste = bitter
Once myconfig.ini is pushed into etcd, it will be flatten as following:
/configs/foods/apple/color = 'red'
/configs/foods/apple/taster = 'sweet'
/configs/foods/coffee/color = 'black'
/configs/foods/coffee/taste = 'bitter'
Yaml/JSON configurations are flatten with the same principle. In this case, lists are stored as strings.
For example:
import etcd3
import etcdgo
client = etcd3.Etcd3Client(host='127.0.0.1', port=4003)
config = etcdgo.get_config(client, "json", basefolder="/configs")
config.push("foods", "myconfig.json")
Our myconfig.json configuration:
{
"fruits" : {
"apple" : {
"color": "red",
"taste": "sweet"
},
"coffee" : {
"color": "black",
"taste": "bitter"
},
},
"sets" : ["fruits", "vegetables" ]
}
Once myconfig.json is pushed into etcd, it will be flatten as following:
/configs/foods/fruits/apple/color = 'red'
/configs/foods/fruits/apple/taster = 'sweet'
/configs/foods/fruits/coffee/color = 'black'
/configs/foods/fruits/coffee/taste = 'bitter'
/configs/foods/sets = '["fruits", "vegetables"]'
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
File details
Details for the file etcdgo-1.2.0.tar.gz.
File metadata
- Download URL: etcdgo-1.2.0.tar.gz
- Upload date:
- Size: 5.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via:
twine/3.1.1 pkginfo/1.5.0.1 requests/2.23.0 setuptools/46.0.0 requests-toolbelt/0.9.1 tqdm/4.45.0 CPython/3.8.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0e3487695475480f36222979e8e4b4a9fe4263373e8bf77a36f01ae8c5caa2f0
|
|
| MD5 |
6fccee9d35ddbe493be93d41badbb80e
|
|
| BLAKE2b-256 |
7b2323c0b0319a769fadbc79674b89941834fffa96cd9042467ccb4ea3bcda27
|