Skip to main content

A library to push/pull configurations inside etcd databases

Project description

Build Status

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

etcdgo-1.2.0.tar.gz (5.6 kB view details)

Uploaded Source

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

Hashes for etcdgo-1.2.0.tar.gz
Algorithm Hash digest
SHA256 0e3487695475480f36222979e8e4b4a9fe4263373e8bf77a36f01ae8c5caa2f0
MD5 6fccee9d35ddbe493be93d41badbb80e
BLAKE2b-256 7b2323c0b0319a769fadbc79674b89941834fffa96cd9042467ccb4ea3bcda27

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page