def list_secret_versions( self, name: str, **kwargs: "**Any") -> AsyncIterable[SecretAttributes]: """List all versions of a secret, including their identifiers and attributes but not their values. Requires the secrets/list permission. :param str name: Name of the secret :returns: An iterator of secrets :rtype: ~azure.core.async_paging.AsyncItemPaged[~azure.keyvault.secrets.models.SecretAttributes] Example: .. literalinclude:: ../tests/test_samples_secrets_async.py :start-after: [START list_secret_versions] :end-before: [END list_secret_versions] :language: python :caption: List all versions of a secret :dedent: 8 """ max_results = kwargs.get("max_page_size") return self._client.get_secret_versions( self.vault_url, name, maxresults=max_results, cls=lambda objs: [SecretAttributes._from_secret_item(x) for x in objs], **kwargs)
async def restore_secret(self, backup: bytes, **kwargs: "**Any") -> SecretAttributes: """Restore a backed up secret. Requires the secrets/restore permission. :param bytes backup: The raw bytes of the secret backup :returns: The restored secret :rtype: ~azure.keyvault.secrets.models.SecretAttributes :raises: :class:`~azure.core.exceptions.ResourceExistsError` if the secret's name is already in use, :class:`~azure.core.exceptions.HttpResponseError` for other errors Example: .. literalinclude:: ../tests/test_samples_secrets_async.py :start-after: [START restore_secret] :end-before: [END restore_secret] :language: python :caption: Restore a backed up secret :dedent: 8 """ bundle = await self._client.restore_secret( self.vault_url, backup, error_map={409: ResourceExistsError}, **kwargs) return SecretAttributes._from_secret_bundle(bundle)
async def update_secret( self, name: str, version: Optional[str] = None, content_type: Optional[str] = None, enabled: Optional[bool] = None, not_before: Optional[datetime] = None, expires: Optional[datetime] = None, tags: Optional[Dict[str, str]] = None, **kwargs: Mapping[str, Any] ) -> SecretAttributes: """Update a secret's attributes, such as its tags or whether it's enabled. Requires the secrets/set permission. **This method can't change a secret's value.** Use :func:`set_secret` to change values. :param str name: Name of the secret :param str version: (optional) Version of the secret to update. If unspecified, the latest version is updated. :param str content_type: (optional) An arbitrary string indicating the type of the secret, e.g. 'password' :param bool enabled: (optional) Whether the secret is enabled for use :param datetime.datetime not_before: (optional) Not before date of the secret in UTC :param datetime.datetime expires: (optional) Expiry date of the secret in UTC. :param dict(str, str) tags: (optional) Application specific metadata in the form of key-value pairs. :rtype: ~azure.keyvault.secrets.models.SecretAttributes :raises: ~azure.core.exceptions.ResourceNotFoundError if the secret doesn't exist Example: .. literalinclude:: ../tests/test_samples_secrets_async.py :start-after: [START update_secret] :end-before: [END update_secret] :language: python :caption: Updates a secret's attributes :dedent: 8 """ if enabled is not None or not_before is not None or expires is not None: attributes = self._client.models.SecretAttributes(enabled=enabled, not_before=not_before, expires=expires) else: attributes = None bundle = await self._client.update_secret( self.vault_url, name, secret_version=version or "", content_type=content_type, tags=tags, secret_attributes=attributes, error_map={404: ResourceNotFoundError}, **kwargs ) return SecretAttributes._from_secret_bundle(bundle) # pylint: disable=protected-access
async def recover_deleted_secret(self, name: str, **kwargs: Mapping[str, Any]) -> SecretAttributes: """Recover a deleted secret to its latest version. This is only possible in vaults with soft-delete enabled. Requires the secrets/recover permission. :param str name: Name of the secret :returns: The recovered secret :rtype: ~azure.keyvault.secrets.models.SecretAttributes Example: .. literalinclude:: ../tests/test_samples_secrets_async.py :start-after: [START recover_deleted_secret] :end-before: [END recover_deleted_secret] :language: python :caption: Recover a deleted secret :dedent: 8 """ bundle = await self._client.recover_deleted_secret(self.vault_url, name, **kwargs) return SecretAttributes._from_secret_bundle(bundle)
def list_secrets(self, **kwargs: Mapping[str, Any]) -> AsyncIterable[SecretAttributes]: """List the latest identifier and attributes of all secrets in the vault, not including their values. Requires the secrets/list permission. :returns: An iterator of secrets :rtype: ~azure.core.async_paging.AsyncItemPaged[~azure.keyvault.secrets.models.SecretAttributes] Example: .. literalinclude:: ../tests/test_samples_secrets_async.py :start-after: [START list_secrets] :end-before: [END list_secrets] :language: python :caption: Lists all secrets :dedent: 8 """ max_results = kwargs.get("max_page_size") return self._client.get_secrets( self.vault_url, maxresults=max_results, cls=lambda objs: [SecretAttributes._from_secret_item(x) for x in objs], **kwargs )