def find_cluster(cid=None, name=None):
        """
        find the cluster according to provided ID or name
        :param cid: id of cluster to find
        :param name: name of cluster to find
        :return: the cluster if found else None
        """
        LOGGER.debug("ClusterService.find_cluster")
        ret = None
        if (cid is None or not cid) and (name is None or not name):
            raise exceptions.ArianeCallParametersError('id or name')

        if (cid is not None and cid) and (name is not None and name):
            LOGGER.debug('ClusterService.find_cluster - Both id and name are defined. Will give you search on id.')
            # traceback.print_stack()
            name = None

        params = None
        if cid is not None and cid:
            params = SessionService.complete_transactional_req({'ID': cid})
            if MappingService.driver_type != DriverFactory.DRIVER_REST:
                params['OPERATION'] = 'getCluster'
        elif name is not None and name:
            params = SessionService.complete_transactional_req({'name': name})
            if MappingService.driver_type != DriverFactory.DRIVER_REST:
                params['OPERATION'] = 'getClusterByName'

        if MappingService.driver_type != DriverFactory.DRIVER_REST:
            args = {'properties': params}
        else:
            args = {'http_operation': 'GET', 'operation_path': 'get', 'parameters': params}

        response = ClusterService.requester.call(args)

        if MappingService.driver_type != DriverFactory.DRIVER_REST:
            response = response.get()

        if response.rc == 0:
            ret = Cluster.json_2_cluster(response.response_content)
        elif response.rc != 404:
            err_msg = 'ClusterService.find_cluster - Problem while finding cluster (id:' + str(cid) + '). ' + \
                      'Reason: ' + str(response.response_content) + ' - ' + str(response.error_message) + \
                      " (" + str(response.rc) + ")"
            LOGGER.warning(err_msg)
            if response.rc == 500 and ArianeMappingOverloadError.ERROR_MSG in response.error_message:
                raise ArianeMappingOverloadError("ClusterService.find_cluster", ArianeMappingOverloadError.ERROR_MSG)
            # traceback.print_stack()
        return ret
find the cluster according to provided ID or name
        :param cid: id of cluster to find
        :param name: name of cluster to find
        :return: the cluster if found else None