def avail_locations(conn=None, call=None):
    if call == 'action':
        raise SaltCloudSystemExit(
            'The avail_locations function must be called with '
            '-f or --function, or with the --list-locations option'
        )

    if not conn:
        conn = get_conn()

    ret = {}
    locations = conn.list_locations()
    for location in locations:
        ret[location.name] = {
            'name': location.name,
            'display_name': location.display_name,
            'available_services': location.available_services,
        }
    return ret
L{Action.continueTask} starts the L{Action} it creates.
dataset/ETHPy150Open saltstack/salt/salt/cloud/clouds/msazure.py/avail_locations--crossover with--dataset/ETHPy150Open ClusterHQ/eliot/eliot/tests/test_action.py/SerializationTests.test_continueTaskStartsAction