Constructor: use AppRole authentication to read secrets from a Vault path

        See https://www.vaultproject.io/docs/auth/approle.html

        Args:
            url: Vault url
            path: Vault path where secrets are stored
            role_id: Vault RoleID
            secret_id: Vault SecretID

def from_app_role(cls, url, path, role_id, secret_id):
        """Constructor: use AppRole authentication to read secrets from a Vault path

        See https://www.vaultproject.io/docs/auth/approle.html

        Args:
            url: Vault url
            path: Vault path where secrets are stored
            role_id: Vault RoleID
            secret_id: Vault SecretID
        """
        token = cls._fetch_app_role_token(url, role_id, secret_id)
        source_dict = cls._fetch_secrets(url, path, token)
        return cls(source_dict, url, path, token)