How often do you wonder where to store the project settings? When your project is small it is not a big problem. But if your big project consists of dozens of microservices then there is a problem of centralized configuration management. The Сonsul have a key/value storage that is ideal for this.
With consul-options you can define and use options in your code by a simple and elegant way. Just take a look at the example:
class DB(ConsulKV):
pass
class Users(DB):
host = '127.0.0.1'
port = 5432
user = 'postgres'
password = 'postgres'
dbname = 'users'
class Orders(DB):
host = '127.0.0.1'
port = 5432
user = 'postgres'
password = 'postgres'
dbname = 'orders'
Now you can access option values in a clear way:
from consul_options import options
print options.db.users.host
print options.db.orders.dbname
consul-options automagically creates folders and keys with default values defined above in Consul and later read them from there. So if anyone will change the value of db/orders/host key to something different in Consul then you will get that value.
How project options stored in Consul
When you declare a new class based on ConsulKV default bahavior is creation a folder in Consul key/value storage with name of your class in lowercase. Each class attribute you define will have mapping to key folder/key. If you don’t agree with generated folder name you are free to choose any other with reserved class attribute __key__ as shown below:
class WorkerOptions(ConsulKV):
__key__ = 'worker'
host = '127.0.0.1'
port = 80
After that you can access to the option with “worker” in path:
from consul_options import options
print options.worker.host
print options.worker.port
To create hierarchical key structure you can take advantage of usual class hierarchy:
from consul_options import ConsulKV, options
class WorkerOptions(ConsulKV):
__key__ = 'worker'
host = '127.0.0.1'
port = 80
class DB(WorkerOptions):
host = '127.0.0.1'
port = 5432
user = 'postgres'
password = 'postgres'
print options.worker.db.host # 'host'
print options.worker.db.port # 5432
It is also possible to create keys at root level with class attribute __root__:
class RootOptions(ConsulKV):
__root__ = True
host = '127.0.0.1'
port = 80
print options.host
print options.port
Compatibility
consul-options is compatible with both Python 2 and Python 3.
Installation
Use pip to install:
$ pip install consul-options
License
consul-options is developed and distributed under the Apache 2.0 license.
Metadata
Release files for consul-options 1.2
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| consul-options-1.2.tar.gz | 4.2 kB | Details |
Release files / consul-options-1.2.tar.gz
| Download URL | consul-options-1.2.tar.gz |
|---|---|
| Size | 4.2 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
87b4f4d1aa8a4f03151bd0a853a4dabe2cb85237672d29abfa898ac4049b03dd
|
|
BLAKE2b-256 checksum How to use checksums |
0c3eac99fad520ad36eaff98ef9acc863078027c909a39c201e8c36894605f3b
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |