A library to push/pull configurations inside etcd databases
Project description
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"]'
Project details
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 |