'Copies an image from a source region to the destination region.
If not provide a destination region, default to the current region.
@inherits :class:`NodeDriver.copy_image`
:keyword ex_destination_region_id: id of the destination region
:type ex_destination_region_id: ``str``
:keyword ex_client_token: a token generated by client to identify
each request.
:type ex_client_token: ``str``'

def copy_image(self, source_region, node_image, name, description=None, ex_destination_region_id=None, ex_client_token=None):

    params = {'Action': 'CopyImage', 'RegionId': source_region, 'ImageId': node_image.id}
    if (ex_destination_region_id is not None):
        params['DestinationRegionId'] = ex_destination_region_id
    else:
        params['DestinationRegionId'] = self.region
    if name:
        params['DestinationImageName'] = name
    if description:
        params['DestinationDescription'] = description
    if ex_client_token:
        params['ClientToken'] = ex_client_token
    resp = self.connection.request(self.path, params)
    image_id = findtext(resp.object, 'ImageId', namespace=self.namespace)
    return self.get_image(image_id=image_id)
