def purchase_reserved_cache_nodes_offering(ReservedCacheNodesOfferingId=
    None, ReservedCacheNodeId=None, CacheNodeCount=None):
    """
    Allows you to purchase a reserved cache node offering.
    See also: AWS API Documentation
    
    
    :example: response = client.purchase_reserved_cache_nodes_offering(
        ReservedCacheNodesOfferingId='string',
        ReservedCacheNodeId='string',
        CacheNodeCount=123
    )
    
    
    :type ReservedCacheNodesOfferingId: string
    :param ReservedCacheNodesOfferingId: [REQUIRED]
            The ID of the reserved cache node offering to purchase.
            Example: 438012d3-4052-4cc7-b2e3-8d3372e0e706
            

    :type ReservedCacheNodeId: string
    :param ReservedCacheNodeId: A customer-specified identifier to track this reservation.
            Note
            The Reserved Cache Node ID is an unique customer-specified identifier to track this reservation. If this parameter is not specified, ElastiCache automatically generates an identifier for the reservation.
            Example: myreservationID
            

    :type CacheNodeCount: integer
    :param CacheNodeCount: The number of cache node instances to reserve.
            Default: 1
            

    :rtype: dict
    :return: {
        'ReservedCacheNode': {
            'ReservedCacheNodeId': 'string',
            'ReservedCacheNodesOfferingId': 'string',
            'CacheNodeType': 'string',
            'StartTime': datetime(2015, 1, 1),
            'Duration': 123,
            'FixedPrice': 123.0,
            'UsagePrice': 123.0,
            'CacheNodeCount': 123,
            'ProductDescription': 'string',
            'OfferingType': 'string',
            'State': 'string',
            'RecurringCharges': [
                {
                    'RecurringChargeAmount': 123.0,
                    'RecurringChargeFrequency': 'string'
                },
            ]
        }
    }
    
    
    :returns: 
    General purpose:
    Current generation: cache.t2.micro , cache.t2.small , cache.t2.medium , cache.m3.medium , cache.m3.large , cache.m3.xlarge , cache.m3.2xlarge , cache.m4.large , cache.m4.xlarge , cache.m4.2xlarge , cache.m4.4xlarge , cache.m4.10xlarge
    Previous generation: cache.t1.micro , cache.m1.small , cache.m1.medium , cache.m1.large , cache.m1.xlarge
    
    
    Compute optimized: cache.c1.xlarge
    Memory optimized:
    Current generation: cache.r3.large , cache.r3.xlarge , cache.r3.2xlarge , cache.r3.4xlarge , cache.r3.8xlarge
    Previous generation: cache.m2.xlarge , cache.m2.2xlarge , cache.m2.4xlarge
    
    
    
    """
    pass
