Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # -*- coding: utf-8 -*-
- import requests, os
- import shutil, errno
- import psycopg2
- import psycopg2.extras
- import xml.etree.ElementTree as ET
- from time import sleep
- from subprocess import Popen, PIPE
- from kazoo.client import KazooClient
- class SolrUtil:
- def get_parameters(self, tenant_division_key):
- conn_string = 'host=softcubepostgre02.cloudapp.net dbname=softcube user=admin password=P@$$w0rd88'
- table_name = 'sc.tenant_division'
- pg_client = psycopg2.connect(conn_string)
- pg_cursor = pg_client.cursor(cursor_factory=psycopg2.extras.DictCursor)
- pg_cursor.execute("select id from " + table_name + " where divisionkey = '"+tenant_division_key+"'")
- rows = pg_cursor.fetchall()
- all_rows = []
- for row in rows:
- all_rows.append(row)
- tenant_division_id = all_rows[0]['id']
- return tenant_division_id
- def has_such_collection(self, collection_name):
- for i in range(1,4):
- query = 'http://solr0'+str(i)+':8080/solr/admin/cores?action=STATUS&core='+collection_name
- response = requests.get(query)
- if "instanceDir" in response.text:
- return True
- return False
- def copy(self, src, dst):
- try:
- shutil.copytree(src, dst)
- except OSError as exc: # python >2.5
- if exc.errno == errno.ENOTDIR:
- shutil.copy(src, dst)
- else:
- raise
- def create_new_collection(self, collection_name):
- native_collection_name = 'collection_history'
- path_to_new_collection = '/home/azureuser/recommend/'+collection_name
- path_to_native_collection = '/home/azureuser/recommend/'+native_collection_name
- path_to_new_collection_conf = path_to_new_collection+'/'+'conf'
- path_to_native_collection_conf = path_to_native_collection+'/'+'conf'
- self.copy(path_to_native_collection_conf, path_to_new_collection_conf)
- def change_data_config(self, collection_name, tenant_division_id):
- new_query = 'select * from staging.product_export_framework_history where tenant_division_id = '+str(tenant_division_id)
- path_to_data_config = '/home/azureuser/recommend/'+collection_name+'/'+'conf/'+'data-config.xml'
- tree = ET.parse(path_to_data_config)
- root = tree.getroot()
- for country in root.iter('entity'):
- country.set('query', new_query)
- tree.write(path_to_data_config, encoding='utf-8', xml_declaration=True)
- def update_zookeeper(self, core_name):
- directory = '/home/azureuser/recommend/'+core_name+'/conf'
- process = Popen(['java', '-classpath', '.:/home/azureuser/solr-work/solr-war-lib/*', 'org.apache.solr.cloud.ZkCLI', '-cmd', 'upconfig', '-zkhost', 'solr01:2181,solr02:2181,solr03:2181', '-confdir', directory, '-confname', core_name], stdout=PIPE, stderr=PIPE)
- stdout, stderr = process.communicate()
- # sleep(5)
- def delete_zookeeper(self, core_name):
- zk = KazooClient(hosts='solr01:2181,solr02:2181,solr03:2181')
- zk.start()
- zk.delete('/configs/27B8359_1', recursive=True)
- zk.stop()
- def create_core_in_webinterface(self, core_name):
- for i in range(1,4):
- CREATE_URL = 'http://solr0'+str(i)+'.cloudapp.net:8080/solr/admin/cores?action=CREATE&name={0}&instanceDir=/var/lib/tomcat7/solr/{0}&config=solrconfig.xml&schema=schema.xml&dataDir=/var/lib/tomcat7/solr/{0}/data'
- url = CREATE_URL.format(core_name)
- response = requests.get(url)
- def reload_core(self, core_name):
- RELOAD_URL = 'http://solr01.cloudapp.net:8080/solr/admin/cores?action=RELOAD&name={0}&instanceDir=/var/lib/tomcat7/solr/{0}&config=solrconfig.xml&schema=schema.xml&dataDir=/var/lib/tomcat7/solr/{0}/data'
- url = RELOAD_URL.format(core_name)
- response = requests.get(url)
- def unload_core(self, core_name):
- for i in range(1,4):
- UNLOAD_URL = 'http://solr0'+str(i)+'.cloudapp.net:8080/solr/admin/cores?action=UNLOAD&core={0}'
- url = UNLOAD_URL.format(core_name)
- response = requests.get(url)
- def delete_core_in_zookepeer(self, core_name):
- for i in range(1,4):
- DELETE_URL = 'http://solr0'+str(i)+'.cloudapp.net:8080/solr/admin/cores?action=DELETE&name={0}&instanceDir=/var/lib/tomcat7/solr/{0}&config=solrconfig.xml&schema=schema.xml&dataDir=/var/lib/tomcat7/solr/{0}/data'
- url = DELETE_URL.format(core_name)
- response = requests.get(url)
- def data_import(self, core_name):
- query_string = 'http://solr01.cloudapp.net:8080/solr/'+core_name+'/dataimport?command=full-import'
- r = requests.get(query_string)
- def delete_directory(self, collection_name):
- path_to_directory = '/home/azureuser/recommend/'+collection_name
- shutil.rmtree(path_to_directory)
- def create_core(self, tenant_division_key, type_recommendation):
- collection_name = tenant_division_key+'_'+type_recommendation
- tenant_division_id = self.get_parameters(tenant_division_key)
- if self.has_such_collection(collection_name):
- raise Exception("Collection_history already exists!")
- else:
- self.create_new_collection(collection_name)
- self.change_data_config(collection_name,tenant_division_id)
- self.update_zookeeper(collection_name)
- self.delete_directory(collection_name)
- self.create_core_in_webinterface(collection_name)
- def delete_core(self, tenant_division_key, type_recommendation):
- collection_name = tenant_division_key+'_'+type_recommendation
- self.delete_zookeeper(collection_name)
- self.unload_core(collection_name)
- def data_import(self, collection_name):
- query = 'http://solr01.cloudapp.net:8080/solr/'+collection_name+'/dataimport?command=full-import'
- r = requests.get(query)
- if __name__ == '__main__':
- solr_core = SolrUtil();
- core = 'D6931C0'
- name = 'history'
- collection_name = core+'_'+name
- # hersecret
- solr_core.delete_core(core, name)
- solr_core.create_core(core, name)
- # solr_core.data_import(collection_name)
- #
- #
- #
- #
- #
- #
- #
- # core = '14B95FB'
- # name = 'history'
- # collection_name = core+'_'+name
- # # zoozoo
- # solr_core.delete_core(core, name)
- # solr_core.create_core(core, name)
- # solr_core.data_import(collection_name)
- #
- #
- #
- #
- #
- # # solr_core.data_import(collection_name)
- # #
- # core = '2CBDD13'
- # name = 'history'
- # collection_name = core+'_'+name
- # # lila
- # solr_core.delete_core(core, name)
- # solr_core.create_core(core, name)
- # solr_core.data_import(collection_name)
- # #
- #
- #
- #
- #
- # core = 'F1105C6'
- # name = 'history'
- # collection_name = core+'_'+name
- # # avelita
- # solr_core.delete_core(core, name)
- # solr_core.create_core(core, name)
- # solr_core.data_import(collection_name)
- # # #
- # #
- # #
- # #
- # #
- # #
- # #
- # core = 'D9216D9'
- # name = 'history'
- # collection_name = core+'_'+name
- # # fisherway
- # solr_core.delete_core(core, name)
- # solr_core.create_core(core, name)
- # solr_core.data_import(collection_name)
- #
- #
- #
- #
- #
- #
- #
- # # solr_core.data_import(collection_name)
- #
- #
- # # '14B95FB' - zoozoo
- # # '2CBDD13' - lila
- # # 'F1105C6' - avelita
- # # 'D9216D9' - fisherway
- #
- # # core = '644E031'
- # # name = 'history'
- # # collection_name = core+'_'+name
- # # # fotomag
- # # solr_core.delete_core(core, name)
- # # solr_core.create_core(core, name)
- #
- # # solr_core.create_core('27B8359', '1')
- # # solr_core.create_core_in_webinterface('FF00BA0_history')
- # # solr_core.data_import('FF00BA0_history')
- #
- # # solr_core.delete_core('27B8359', '1')
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement