<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:

def get_resource_pools(service_instance, resource_pool_names, datacenter_name=None,
                       get_all_resource_pools=False):
    '''
    Retrieves resource pool objects

    service_instance
        The service instance object to query the vCenter

    resource_pool_names
        Resource pool names

    datacenter_name
        Name of the datacenter where the resource pool is available

    get_all_resource_pools
        Boolean

    return
        Resourcepool managed object reference
    '''

    properties = ['name']
    if not resource_pool_names:
        resource_pool_names = []
    if datacenter_name:
        container_ref = get_datacenter(service_instance, datacenter_name)
    else:
        container_ref = get_root_folder(service_instance)

    resource_pools = get_mors_with_properties(service_instance,
                                              vim.ResourcePool,
                                              container_ref=container_ref,
                                              property_list=properties)

    selected_pools = []
    for pool in resource_pools:
        if get_all_resource_pools or (pool['name'] in resource_pool_names):
            selected_pools.append(pool['object'])
    if not selected_pools:
        raise salt.exceptions.VMwareObjectRetrievalError(
            'The resource pools with properties '
            'names={} get_all={} could not be found'.format(selected_pools,
                                                            get_all_resource_pools))

    return selected_pools