'Configure versioning for this bucket.
..note:: This feature is currently in beta.
:type versioning: bool
:param versioning: A boolean indicating whether version is
enabled (True) or disabled (False).
:type mfa_delete: bool
:param mfa_delete: A boolean indicating whether the
Multi-Factor Authentication Delete feature is enabled
(True) or disabled (False).  If mfa_delete is enabled then
all Delete operations will require the token from your MFA
device to be passed in the request.
:type mfa_token: tuple or list of strings
:param mfa_token: A tuple or list consisting of the serial
number from the MFA device and the current value of the
six-digit token associated with the device.  This value is
required when you are changing the status of the MfaDelete
property of the bucket.'

def configure_versioning(self, versioning, mfa_delete=False, mfa_token=None, headers=None):

    if versioning:
        ver = 'Enabled'
    else:
        ver = 'Suspended'
    if mfa_delete:
        mfa = 'Enabled'
    else:
        mfa = 'Disabled'
    body = (self.VersioningBody % (ver, mfa))
    if mfa_token:
        if (not headers):
            headers = {}
        provider = self.connection.provider
        headers[provider.mfa_header] = '    '.join(mfa_token)
    response = self.connection.make_request('PUT', self.name, data=body, query_args='versioning', headers=headers)
    body = response.read()
    if (response.status == 200):
        return True
    else:
        raise self.connection.provider.storage_response_error(response.status, response.reason, body)
