docs: def update_generic_password(client, path):
      """Will update a single key in a generic secret backend as
      thought it were a password"""
      vault_path, key = path_pieces(path)
      mount = mount_for_path(vault_path, client)
      if not mount:
          client.revoke_self_token()
          raise aomi.exceptions.VaultConstraint('invalid path')
  
      if backend_type(mount, client) != 'generic':
          client.revoke_self_token()
          raise aomi.exceptions.AomiData("Unsupported backend type")
  
      LOG.debug("Updating generic password at %s", path)
      existing = client.read(vault_path)
      if not existing or 'data' not in existing:
          LOG.debug("Nothing exists yet at %s!", vault_path)
          existing = {}
      else:
          LOG.debug("Updating %s at %s", key, vault_path)
          existing = existing['data']
  
      new_password = get_password()
      if key in existing and existing[key] == new_password:
          client.revoke_self_token()
          raise aomi.exceptions.AomiData("Password is same as existing")
  
      existing[key] = new_password
      client.write(vault_path, **existing)