<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def _execute_sum(sum_file_path, mount_point, components=None):
 """Executes the SUM based firmware update command. This method executes the SUM based firmware update command to update the components specified, if not, it performs update on all the firmware components on th server. :param sum_file_path: A string with the path to the SUM binary to be executed :param components: A list of components to be updated. If it is None, all the firmware components are updated. :param mount_point: Location in which SPP iso is mounted. :returns: A string with the statistics of the updated/failed components. :raises: SUMOperationError, when the SUM based firmware update operation on the node fails. """

    cmd = ' --c ' + ' --c '.join(components) if components else ''

    try:
        if SUM_LOCATION in sum_file_path:
            location = os.path.join(mount_point, 'packages')

            # NOTE: 'launch_sum.sh' binary is part of SPP ISO and it is
            # available in the SPP mount point (eg:'/mount/launch_sum.sh').
            # 'launch_sum.sh' binary calls the 'smartupdate' binary by passing
            # the arguments.
            processutils.execute('./launch_sum.sh', '--s', '--romonly',
                                 '--use_location', location, cmd,
                                 cwd=mount_point)
        else:
            processutils.execute(sum_file_path, '--s', '--romonly', cmd)
    except processutils.ProcessExecutionError as e:
        result = _parse_sum_ouput(e.exit_code)
        if result:
            return result
        else:
            raise exception.SUMOperationError(reason=str(e))