コード例 #1
0
ファイル: indexing.py プロジェクト: SEEK-Jobs/cloudview-cli
def _wait_compaction_complete(client, params, bg):
    timeout = int(params['timeout'])
    if not params['wait-for-completion']:
        print "wait-for-completion option is not set so no need to check for compaction to complete"
        print "use --wait-for-completion to make this script wait for compaction to complete"
        return True
    wait_time = 10 #wait 10 seconds before checking again
    try_number = timeout / wait_time + 1
    client.options.plugins = [common._AttributePlugin(buildGroup=bg)]
    for i in range(0, try_number):
        bg_status = client.service.getBuildGroupStatus()
        if not bg_status.IndexBuilderStatus._compacting:
            print "Compaction completed for build group {} after {} seconds".format(bg, i * wait_time)
            return True
        print "Compaction in progress. Waiting {} seconds before checking again".format(wait_time)
        print "Compaction progress per slice:"
        for stat in bg_status.IndexBuilderStatus.IndexSliceBuilderStatus:
            if stat._compacting:
                print "  slice {}: Docs {}, {}% done (compacting {} {}%)".format(stat._indexSlice, stat._ndocs, stat.CompactingStatus._globalProgress, stat.CompactingStatus._component, stat.CompactingStatus._progress)
            else:
                print "  slice {} finished compacting".format(stat._indexSlice)
        time.sleep(wait_time)
    client.options.plugins = []
    print "Compaction didn't finish within timeout period of {} seconds. exiting ...".format(timeout)
    return False
コード例 #2
0
ファイル: indexing.py プロジェクト: SEEK-Jobs/cloudview-cli
def _fullCompactIndex(params):
    bg_slices = _get_bg_slices(params)
    #if the build-group parameter is not specified runs compaction for all build groups
    if params['build-group']:
        bg = params['build-group']
        if bg not in bg_slices:
            common.print_usage("Invalid build group {}".format(bg))
        bg_slices = {bg: bg_slices[bg]}

    url = "http://{}:{}/mami/indexing/soap".format(params['master'] , params['master-port'])
    wsdl_url = "{}?wsdl".format(url)
    imp = Import('exa:exa.bee', "{}?xsd=2".format(url))
    client = Client(wsdl_url, plugins=[ImportDoctor(imp)])
    for bg in bg_slices:
        nb_slices = int(bg_slices[bg])
        slices = ','.join(str(i) for i in xrange(nb_slices))
        print "Compacting slices ({}) for build group ({})".format(slices, bg)
        client.options.plugins = [common._AttributePlugin(buildGroup=bg, indexSlices=slices)]
        client.service.fullCompactIndex()
        client.options.plugins = []
        _wait_compaction_complete(client, params, bg)