rstgroup/php-consul-kv-array-getter

This library allows you to receive the consul's KV Store's keys as a structured array.

1.0 2017-07-26 09:59 UTC

This package is not auto-updated.

Last update: 2024-04-14 02:40:00 UTC


README

Build Status

What does this library do?

The library allows you to retrieve whole tree of properties from Consul's KV store. Retrieved data is grouped into nested arrays.

How to install it?

Require the package by Composer:

composer require rstgroup/php-consul-kv-array-getter

How to use the library?

All you need is instance of SensioLabs\Consul\Services\KVInterface and pass it to the RstGroup\PhpConsulKVArrayGetter\Consul\ConsulArrayGetter constructor:

use SensioLabs\Consul\ServiceFactory;
use SensioLabs\Consul\Services\KVInterface;
use RstGroup\PhpConsulKVArrayGetter\Consul\ConsulArrayGetter;

// your consul options:
$consulParams = [
    'base_uri' => 'http://consul-domain:8500'
];

// prepare service that talks to Consul KV
$consulServicesFactory = new ServiceFactory($consulParams);
$kvService = $consulServicesFactory->get(KVInterface::class);

// create getter instance
$consulArrayGetter = new ConsulArrayGetter(
    $kvService
);

// get the keys as structure
$result = $consulArrayGetter->getByPrefix('prefix');

How keys are mapped to return structure?

Let's assume we have list of keys present in KV Store:

application/db/host      => 'some host'
application/cache/prefix => 'abcd.prefix'
application/name         => 'app'

If we fetch config with prefix 'application' we will receive:

$consulArrayGetter->getByPrefix('application') == [
    'application' => [
        'db' => [ 'host' => 'some host' ],
        'cache' => [ 'prefix' => 'abcd.prefix' ],
        'name' => 'app'
    ]
]

If you add slash at the end, the result array will be created relative to application key:

$consulArrayGetter->getByPrefix('application/') == [
    'db' => [ 'host' => 'some host' ],
    'cache' => [ 'prefix' => 'abcd.prefix' ],
    'name' => 'app'
]

Adding another key part after slash will return only those keys that match given prefix:

$consulArrayGetter->getByPrefix('application/db') == [
    'db' => [ 'host' => 'some host' ]
]