charms.layer.vault_kv
VaultNotReady
```python
VaultNotReady(self, /, *args, **kwargs)
```
Exception indicating that Vault was accessed before it was ready.
VaultUnitKV
```python
VaultUnitKV(self)
```
A simplified interface for storing data in Vault, with the data scoped to
the current unit.
Keys must be strings, but data can be structured as long as it is
JSON-serializable.
This class can be used as a dict, or you can use `self.get` and `self.set`
for a more KV-like interface. When values are set, via either style, they
are immediately persisted to Vault. Values are also cached in memory.
Note: This class is a singleton.
VaultAppKV
```python
VaultAppKV(self)
```
A simplified interface for storing data in Vault, with data shared by every
unit of the application.
Keys must be strings, but data can be structured as long as it is
JSON-serializable.
This class can be used as a dict, or you can use `self.get` and `self.set`
for a more KV-like interface. When values are set, via either style, they
are immediately persisted to Vault. Values are also cached in memory.
Note: This class is a singleton.
is_changed
```python
VaultAppKV.is_changed(self, key)
```
Determine if the value for the given key has changed since the last
time `self.update_hashes()` has been called.
In order to detect changes, hashes of the values are also sotred
in Vault.
update_hashes
```python
VaultAppKV.update_hashes(self)
```
Update the hashes in Vault, thus marking all fields as unchanged.
This is done automatically at exit.
get_vault_config
```python
get_vault_config()
```
Get the config data needed for this application to access Vault.
This is only needed if you're using another application, such as
VaultLocker, using the secrets backend provided by this layer.
Returns a dictionary containing the following keys:
* vault_url
* secret_backend
* role_id
* secret_id
Note: This data is cached in [UnitData][] so anything with access to that
could access Vault as this application.
If any of this data changes (such as the secret_id being rotated), this
layer will set the `layer.vault-kv.config.changed` flag.
If this is called before the Vault relation is available, it will raise
`VaultNotReady`.
[UnitData]: https://charm-helpers.readthedocs.io/en/latest/api/charmhelpers.core.unitdata.html