Source code for hvac.api.secrets_engines.kv

"""Kv secret backend methods module."""

import logging

from hvac.api.secrets_engines import kv_v1, kv_v2
from hvac.api.vault_api_base import VaultApiBase

logger = logging.getLogger(__name__)


[docs]class Kv(VaultApiBase): """Class containing methods for the key/value secrets_engines backend API routes. Reference: https://www.vaultproject.io/docs/secrets/kv/index.html """ allowed_kv_versions = ['1', '2']
[docs] def __init__(self, adapter, default_kv_version='2'): """Create a new Kv instnace. :param adapter: Instance of :py:class:`hvac.adapters.Adapter`; used for performing HTTP requests. :type adapter: hvac.adapters.Adapter :param default_kv_version: KV version number (e.g., '1') to use as the default when accessing attributes/methods under this class. :type default_kv_version: str | unicode """ super(Kv, self).__init__(adapter=adapter) self._default_kv_version = default_kv_version self._kv_v1 = kv_v1.KvV1(adapter=self._adapter) self._kv_v2 = kv_v2.KvV2(adapter=self._adapter)
@property def v1(self): """Accessor for kv version 1 class / method. Provided via the :py:class:`hvac.api.secrets_engines.kv_v1.KvV1` class. :return: This Kv instance's associated KvV1 instance. :rtype: hvac.api.secrets_engines.kv_v1.KvV1 """ return self._kv_v1 @property def v2(self): """Accessor for kv version 2 class / method. Provided via the :py:class:`hvac.api.secrets_engines.kv_v2.KvV2` class. :return: This Kv instance's associated KvV2 instance. :rtype: hvac.api.secrets_engines.kv_v2.KvV2 """ return self._kv_v2 @property def default_kv_version(self): return self._default_kv_version @default_kv_version.setter def default_kv_version(self, default_kv_version): if default_kv_version not in self.allowed_kv_versions: error_message = 'Invalid "default_kv_version"; "{allowed}" allowed, "{provided}" provided'.format( allowed=','.join(self.allowed_kv_versions), provided=default_kv_version ) raise ValueError(error_message) self._default_kv_version = default_kv_version def __getattr__(self, item): """Overridden magic method used to direct method calls to the appropriate KV version's hvac class. :param item: Name of the attribute/method being accessed :type item: str | unicode :return: The selected secrets_engines class corresponding to this instance's default_kv_version setting :rtype: hvac.api.vault_api_base.VaultApiBase """ if self.default_kv_version == '1': return getattr(self._kv_v1, item) elif self.default_kv_version == '2': return getattr(self._kv_v2, item) raise AttributeError