Permalink
Fetching contributors…
Cannot retrieve contributors at this time
255 lines (180 sloc) 5.7 KB
#
# Collective Knowledge (indexing through ElasticSearch)
#
# See CK LICENSE.txt for licensing details
# See CK COPYRIGHT.txt for copyright details
#
# Developer: Grigori Fursin
#
cfg={} # Will be updated by CK (meta description of this module)
work={} # Will be updated by CK (temporal data)
ck=None # Will be updated by CK (initialized CK kernel)
# Local settings
##############################################################################
# Initialize module
def init(i):
"""
Input: {}
Output: {
return - return code = 0, if successful
> 0, if error
(error) - error text if return > 0
}
"""
return {'return':0}
##############################################################################
# turn indexing on
def on(i):
"""
Input: {}
Output: {
return - return code = 0, if successful
> 0, if error
(error) - error text if return > 0
}
"""
o=i.get('out','')
i['status']='yes'
r=status(i)
if r['return']>0: return r
if o=='con':
ck.out('Indexing is on')
return {'return':0}
##############################################################################
# turn indexing off
def off(i):
"""
Input: {}
Output: {
return - return code = 0, if successful
> 0, if error
(error) - error text if return > 0
}
"""
o=i.get('out','')
i['status']='no'
r=status(i)
if r['return']>0: return r
if o=='con':
ck.out('Indexing is off')
return {'return':0}
##############################################################################
# show indexing status
def show(i):
"""
Input: {}
Output: {
return - return code = 0, if successful
> 0, if error
(error) - error text if return > 0
}
"""
o=i.get('out','')
i['status']=''
r=status(i)
if r['return']>0: return r
s=r['status']
if s=='yes': sx='on'
else: sx='off'
if o=='con':
ck.out('Indexing status: '+sx)
return {'return':0}
##############################################################################
# check indexing status
def status(i):
"""
Input: {
status - if 'yes', turn it on
if 'no', turn it off
if '', return status
}
Output: {
return - return code = 0, if successful
> 0, if error
(error) - error text if return > 0
status
}
"""
# Get current configuration
cfg={}
r=ck.access({'action':'load',
'repo_uoa':ck.cfg['repo_name_default'],
'module_uoa':ck.cfg['subdir_kernel'],
'data_uoa':ck.cfg['subdir_kernel_default']})
if r['return']==0:
cfg.update(r['dict'])
r=ck.access({'action':'load',
'repo_uoa':ck.cfg['repo_name_local'],
'module_uoa':ck.cfg['subdir_kernel'],
'data_uoa':ck.cfg['subdir_kernel_default']})
if r['return']>0:
if r['return']!=16: return r
ck.out('')
ck.out('We strongly suggest you to setup local repository first!')
return {'return':0}
cfg.update(r['dict'])
# Turn on indexing
st=i.get('status','')
s=cfg.get('use_indexing',ck.cfg.get('use_indexing',''))
if st!='':
cfg['use_indexing']=st
s=st
r=ck.access({'action':'update',
'repo_uoa':ck.cfg['repo_name_local'],
'module_uoa':ck.cfg['subdir_kernel'],
'data_uoa':ck.cfg['subdir_kernel_default'],
'dict':cfg,
'substitute':'yes',
'ignore_update':'yes'})
if r['return']>0: return r
return {'return':0, 'status':s}
##############################################################################
# check indexing status
def test(i):
"""
Input: {
}
Output: {
return - return code = 0, if successful
> 0, if error
(error) - error text if return > 0
}
"""
o=i.get('out','')
r=ck.access_index_server({'request':'TEST', 'dict':{}})
if r['return']>0: return r
dd=r['dict']
status=dd.get('status',0)
if status!=200:
return {'return':1, 'error':'returned status is not 200'}
version=dd.get('version',{}).get('number','')
if o=='con':
ck.out('Indexing server is working. Version = '+version+'.')
return r
##############################################################################
# clean whole index
def clean(i):
"""
Input: {
(force) - if 'yes', force cleaning
}
Output: {
return - return code = 0, if successful
> 0, if error
(error) - error text if return > 0
}
"""
o=i.get('out','')
to_delete=True
if o=='con' and i.get('force','')!='yes':
r=ck.inp({'text':'Are you sure to clean the whole index (y/N): '})
c=r['string'].lower()
if c!='y' and c!='yes': to_delete=False
if to_delete:
r=ck.access_index_server({'request':'DELETE', 'path':'/_all', 'dict':{}})
if r['return']>0: return r
dd=r['dict']
status=dd.get('status',0)
err=dd.get('error','')
if err!='': r={'return':1, 'error':err}
return r