Python Configuration Registry API
=================================
Purpose
-------
The objective of this module is to provide a common API to the configuration
registy used to store service instance properties using KeyValue stores
like consul, etcd or zookeeper.
Usage examples
--------------
Basic usage examples::
import registry
registry.connect()
# Register a new service template using default template type: json+jinja2
registry.register(name, version, description, template, options)
# using template type: yaml+jinja2
cluster = registry.register(name, version, description, template,
options, templatetype='yaml+jinja2')
# Instantiate a new cluster from a given service template
cluster = registry.instantiate(user, servicename, version, options)
# Retrieve a previously instantiated cluster instance
cluster = registry.get_cluster(user='jlopez', framework='cdh', flavour='5.7.0', id='1')
# Alternatively you can retrieve it by DN
cluster = registry.get_cluster(dn='jlopez/cdh/5.7.0/1')
# Retrieve a previously registered Product object
product = registry.get_product(name, version)
template = templateProxy.template
options = templateProxy.options
description = templateProxy.description
nodes = cluster.nodes
services = cluster.services
for node in nodes:
print node.status
nodes[0].status = 'running'
# Deregister a service template (removes it)
registry.deregister(service_name, service_version)
# Deinstantiate a cluster instance (removes it)
registry.deinstantiate(user, framework, flavour)
Notes
-----
Copy recursively an instance into a new one:
```
slave0 = kv.recurse('instances/jlopez/cdh/5.7.0/1/nodes/slave0')
slave1 = {k.replace('slave0', 'slave1'): slave0[k] for k in slave0.keys()}
for k in slave1.keys():
kv.set(k, slave1[k])
```
Sample service Template:
------------------------
- service-template.json
- service-template.yaml
Errors
------
FIXME: yaml+jinja2 fails the test 40% of the times:
```
.E..........
======================================================================
ERROR: test_add_instance_yamltemplate (__main__.RegistryTemplatesTestCase)
----------------------------------------------------------------------
Traceback (most recent call last):
File "tests_integration.py", line 122, in test_add_instance_yamltemplate
self.assertEqual(cluster.nodes[0].networks[0].networkname, 'admin')
File "/home/jlopez/home_common/Reference/src/python/bigdata/configuration-registry/registry.py", line 372, in networks
subtree = _kv.recurse(self._endpoint + '/networks')
File "/home/jlopez/home_common/Reference/src/python/bigdata/configuration-registry/venv/local/lib/python2.7/site-packages/kvstore.py", line 68, in recurse
raise KeyDoesNotExist("Key " + k + " does not exist")
KeyDoesNotExist: Key instances/testuser/__unittests__/0.1.0/44/nodes/master0/networks does not exist
----------------------------------------------------------------------
Ran 12 tests in 14.156s
FAILED (errors=1)
```
=================================
Purpose
-------
The objective of this module is to provide a common API to the configuration
registy used to store service instance properties using KeyValue stores
like consul, etcd or zookeeper.
Usage examples
--------------
Basic usage examples::
import registry
registry.connect()
# Register a new service template using default template type: json+jinja2
registry.register(name, version, description, template, options)
# using template type: yaml+jinja2
cluster = registry.register(name, version, description, template,
options, templatetype='yaml+jinja2')
# Instantiate a new cluster from a given service template
cluster = registry.instantiate(user, servicename, version, options)
# Retrieve a previously instantiated cluster instance
cluster = registry.get_cluster(user='jlopez', framework='cdh', flavour='5.7.0', id='1')
# Alternatively you can retrieve it by DN
cluster = registry.get_cluster(dn='jlopez/cdh/5.7.0/1')
# Retrieve a previously registered Product object
product = registry.get_product(name, version)
template = templateProxy.template
options = templateProxy.options
description = templateProxy.description
nodes = cluster.nodes
services = cluster.services
for node in nodes:
print node.status
nodes[0].status = 'running'
# Deregister a service template (removes it)
registry.deregister(service_name, service_version)
# Deinstantiate a cluster instance (removes it)
registry.deinstantiate(user, framework, flavour)
Notes
-----
Copy recursively an instance into a new one:
```
slave0 = kv.recurse('instances/jlopez/cdh/5.7.0/1/nodes/slave0')
slave1 = {k.replace('slave0', 'slave1'): slave0[k] for k in slave0.keys()}
for k in slave1.keys():
kv.set(k, slave1[k])
```
Sample service Template:
------------------------
- service-template.json
- service-template.yaml
Errors
------
FIXME: yaml+jinja2 fails the test 40% of the times:
```
.E..........
======================================================================
ERROR: test_add_instance_yamltemplate (__main__.RegistryTemplatesTestCase)
----------------------------------------------------------------------
Traceback (most recent call last):
File "tests_integration.py", line 122, in test_add_instance_yamltemplate
self.assertEqual(cluster.nodes[0].networks[0].networkname, 'admin')
File "/home/jlopez/home_common/Reference/src/python/bigdata/configuration-registry/registry.py", line 372, in networks
subtree = _kv.recurse(self._endpoint + '/networks')
File "/home/jlopez/home_common/Reference/src/python/bigdata/configuration-registry/venv/local/lib/python2.7/site-packages/kvstore.py", line 68, in recurse
raise KeyDoesNotExist("Key " + k + " does not exist")
KeyDoesNotExist: Key instances/testuser/__unittests__/0.1.0/44/nodes/master0/networks does not exist
----------------------------------------------------------------------
Ran 12 tests in 14.156s
FAILED (errors=1)
```
Release files for configuration-registry 0.5.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| configuration-registry-0.5.0.tar.gz | 6.6 kB | Details |
Release files / configuration-registry-0.5.0.tar.gz
| Download URL | configuration-registry-0.5.0.tar.gz |
|---|---|
| Size | 6.6 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
c8ba6cafe5ede11ea4d90f98aa4a594df948ffe863f8faa501168ac7831b6f55
|
|
BLAKE2b-256 checksum How to use checksums |
ecbe686914c9c9920b0371734f6e54576ccd06d6c43e75519e3c6e3066480600
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |