class_docstr: An example of a KmsClient implementation with master keys
  managed by Hashicorp Vault KMS.
  See Vault documentation: https://www.vaultproject.io/api/secret/transit
  Not for production use!
docstr: Call Vault to wrap key key_bytes with key
  identified by master_key_identifier.
docstr_tok: ["Call","Vault","to","wrap","key","key_bytes","with","key","identified","by","master_key_identifier","."]
code: def wrap_key(self, key_bytes, master_key_identifier):
      """Call Vault to wrap key key_bytes with key
      identified by master_key_identifier."""
      endpoint = self.kms_url + VaultClient.WRAP_ENDPOINT
      headers = {
          VaultClient.TOKEN_HEADER: self.kms_connection_config.key_access_token
      }
      r = requests.post(
          endpoint + master_key_identifier,
          headers=headers,
          data={"plaintext": base64.b64encode(key_bytes)},
      )
      r.raise_for_status()
      r_dict = r.json()
      wrapped_key = r_dict["data"]["ciphertext"]
      return wrapped_key
  
file_path: arrow/python/examples/parquet_encryption/sample_vault_kms_client.py
imports: import argparse
  import base64
  import os
  import requests
  import pyarrow
  import pyarrow.parquet
  import pyarrow.parquet.encryption
label_desc: Use image node_id 2 for calling the VaultClient obj's underlying member method code with example usage: obj.wrap_key(key_bytes, master_key_identifier) and returns: wrapped_key