Loads a candidate configuration on the device.
        In case the load fails at any point, will automatically rollback to last working configuration.

        :param filename: Specifies the name of the file with the configuration content.
        :param config: New configuration to be uploaded on the device.
        :raise pyPluribus.exceptions.ConfigLoadError: When the configuration could not be uploaded to the device.

def load_candidate(self, filename=None, config=None):
        """
        Loads a candidate configuration on the device.
        In case the load fails at any point, will automatically rollback to last working configuration.

        :param filename: Specifies the name of the file with the configuration content.
        :param config: New configuration to be uploaded on the device.
        :raise pyPluribus.exceptions.ConfigLoadError: When the configuration could not be uploaded to the device.
        """

        configuration = ''

        if filename is None:
            configuration = config
        else:
            with open(filename) as config_file:
                configuration = config_file.read()

        return self._upload_config_content(configuration)