'Moves resources from one resource group to another resource group.
The resources to move must be in the same source resource group. The
target resource group may be in a different subscription. When moving
resources, both the source group and the target group are locked for
the duration of the operation. Write and delete operations are blocked
on the groups until the move completes. .
:param source_resource_group_name: The name of the resource group
containing the rsources to move.
:type source_resource_group_name: str
:param resources: The IDs of the resources.
:type resources: list of str
:param target_resource_group: The target resource group.
:type target_resource_group: str
:param dict custom_headers: headers that will be added to the request
:param bool raw: returns the direct response alongside the
deserialized response
:rtype:
:class:`AzureOperationPoller<msrestazure.azure_operation.AzureOperationPoller>`
instance that returns None
:rtype: :class:`ClientRawResponse<msrest.pipeline.ClientRawResponse>`
if raw=true
:raises: :class:`CloudError<msrestazure.azure_exceptions.CloudError>`'

def move_resources(self, source_resource_group_name, resources=None, target_resource_group=None, custom_headers=None, raw=False, **operation_config):

    parameters = models.ResourcesMoveInfo(resources=resources, target_resource_group=target_resource_group)
    url = '/subscriptions/{subscriptionId}/resourceGroups/{sourceResourceGroupName}/moveResources'
    path_format_arguments = {'sourceResourceGroupName': self._serialize.url('source_resource_group_name', source_resource_group_name, 'str', max_length=90, min_length=1, pattern='^[-\\w\\._\\(\\)]+$'), 'subscriptionId': self._serialize.url('self.config.subscription_id', self.config.subscription_id, 'str')}
    url = self._client.format_url(url, **path_format_arguments)
    query_parameters = {}
    query_parameters['api-version'] = self._serialize.query('self.api_version', self.api_version, 'str')
    header_parameters = {}
    header_parameters['Content-Type'] = 'application/json;    charset=utf-8'
    if self.config.generate_client_request_id:
        header_parameters['x-ms-client-request-id'] = str(uuid.uuid1())
    if custom_headers:
        header_parameters.update(custom_headers)
    if (self.config.accept_language is not None):
        header_parameters['accept-language'] = self._serialize.header('self.config.accept_language', self.config.accept_language, 'str')
    body_content = self._serialize.body(parameters, 'ResourcesMoveInfo')
    def long_running_send():
        request = self._client.post(url, query_parameters)
        return self._client.send(request, header_parameters, body_content, **operation_config)
    def get_long_running_status(status_link, headers=None):
        request = self._client.get(status_link)
        if headers:
            request.headers.update(headers)
        return self._client.send(request, header_parameters, **operation_config)
    def get_long_running_output(response):
        if (response.status_code not in [202, 204]):
            exp = CloudError(response)
            exp.request_id = response.headers.get('x-ms-request-id')
            raise exp
        if raw:
            client_raw_response = ClientRawResponse(None, response)
            return client_raw_response
    if raw:
        response = long_running_send()
        return get_long_running_output(response)
    long_running_operation_timeout = operation_config.get('long_running_operation_timeout', self.config.long_running_operation_timeout)
    return AzureOperationPoller(long_running_send, get_long_running_output, get_long_running_status, long_running_operation_timeout)
