'Imports a disk into an EBS snapshot. More information can be found
at https://goo.gl/sbXkYA.
:param  client_data: Describes the client specific data (optional)
:type   client_data: ``dict``
:param  client_token: The token to enable idempotency for VM
import requests.(optional)
:type   client_token: ``str``
:param  description: The description string for the
import snapshot task.(optional)
:type   description: ``str``
:param  disk_container:The disk container object for the
import snapshot request.
:type   disk_container:``dict``
:param  dry_run: Checks whether you have the permission for
the action, without actually making the request,
and provides an error response.(optional)
:type   dry_run: ``bool``
:param  role_name: The name of the role to use when not using the
default role, \'vmimport\'.(optional)
:type   role_name: ``str``
:rtype: :class: ``VolumeSnapshot``'

def ex_import_snapshot(self, client_data=None, client_token=None, description=None, disk_container=None, dry_run=None, role_name=None):

    params = {'Action': 'ImportSnapshot'}
    if (client_data is not None):
        params.update(self._get_client_date_params(client_data))
    if (client_token is not None):
        params['ClientToken'] = client_token
    if (description is not None):
        params['Description'] = description
    if (disk_container is not None):
        params.update(self._get_disk_container_params(disk_container))
    if (dry_run is not None):
        params['DryRun'] = dry_run
    if (role_name is not None):
        params['RoleName'] = role_name
    importSnapshot = self.connection.request(self.path, params=params).object
    importTaskId = findtext(element=importSnapshot, xpath='importTaskId', namespace=NAMESPACE)
    volumeSnapshot = self._wait_for_import_snapshot_completion(import_task_id=importTaskId, timeout=1800, interval=15)
    return volumeSnapshot
