Return the designated protocol of the scenario.

        If the node's mode is :attr:`NodeMode.MANAGED`, we always choose `http` and
        display a warning if there was a 'protocol' set explicitly in the
        scenario's yaml.

        Otherwise we simply access the 'protocol' key of the yaml, defaulting to
        'http' if it does not exist.

def protocol(self) -> str:
        """Return the designated protocol of the scenario.

        If the node's mode is :attr:`NodeMode.MANAGED`, we always choose `http` and
        display a warning if there was a 'protocol' set explicitly in the
        scenario's yaml.

        Otherwise we simply access the 'protocol' key of the yaml, defaulting to
        'http' if it does not exist.
        """
        if self.nodes.mode is NodeMode.MANAGED:
            if 'protocol' in self._config:
                log.warning('The "protocol" setting is not supported in "managed" node mode.')
            return 'http'
        return self._config.get('protocol', 'http')