1 from fabric.state import env
2 from fabric.operations import run, put
3 import pytest
4
5
7
10
11 - def __init__(self, host, username, key):
12 """
13 Created an instance of this object
14 @param host: IP address of host of server to connect
15 @type host: str
16 @param username: Username used to connect
17 @type username: str
18 @param key: Path to the ssh key used for authentication
19 @type key: str
20 """
21 super(SearchEngineLoader, self).__init__()
22 env.host_string = host
23 env.user = username
24 env.key_filename = key
25
26
27 def raise_error(msg):
28 raise self.OperationError(msg)
29
30 env.abort_exception = lambda msg: raise_error(msg)
31
33 """
34 Loads a xmlgen file to the server and starts a re-index of the search engine
35 @param xmlfile: XML text to load on the search engine
36 @type xmlfile: str
37 """
38 try:
39 env.shell_env = {"PROJECT_DIR": '/mnt/solr/indexer',
40 "DATA_DIR": "/mnt/solr/datafeed"}
41
42
43 logger.debug("Uploading file %s" % xmlfile)
44 put(xmlfile,
45 r"/mnt/solr/datafeed/MainSystem/ypse.ypca.140218.2252.0.xml")
46
47
48 logger.debug("Start re-index of search engine")
49 run('${PROJECT_DIR}/bin/execute_merchant.sh ${PROJECT_DIR} ${DATA_DIR}', shell=True)
50 except self.OperationError as e:
51 logger.error("Error uploading xmlgen file:\\n%s" % e.message)
52 pytest.fail("Error uploading xmlgen file:\\n%s" % e.message)
53