diff options
Diffstat (limited to 'test/mocks/emssimulator/swm/swFallback')
-rwxr-xr-x | test/mocks/emssimulator/swm/swFallback | 127 |
1 files changed, 127 insertions, 0 deletions
diff --git a/test/mocks/emssimulator/swm/swFallback b/test/mocks/emssimulator/swm/swFallback new file mode 100755 index 000000000..9d6608c23 --- /dev/null +++ b/test/mocks/emssimulator/swm/swFallback @@ -0,0 +1,127 @@ +#!/usr/bin/python + +import argparse +import json +import sys +import os +import shutil + +import conf +import ems_util + + +def sw_fallback(ne_info_list): + ne_list = [] + num_failure = 0 + + for ne_info in ne_info_list: + if ne_info.get("status") == conf.STATUS_DOWNLOADING: + ne_info["status"] = conf.STATUS_ACTIVATED + ems_util.update_ne_info(ne_info) + + ne_entry = { + "nEIdentification": ne_info["nEIdentification"], + "swFallbackStatus": "fallbackSuccessful" + } + ne_list.append(ne_entry) + continue + + sw_install_dir_in_ne = conf.PNF_SIMULATORS_DIR + '/' + ne_info['omIP'] + conf.PNF_SW_INSTALL_DIR + + if ne_info.get("status") == conf.STATUS_INSTALLING: + old_sw_version = ne_info.get("currentSwVersion", "") + current_sw_version = ne_info.get("targetSwVersion", "") + else: + old_sw_version = ne_info.get("oldSwVersion", "") + current_sw_version = ne_info.get("currentSwVersion", "") + + old_sw_dir = sw_install_dir_in_ne + '/' + old_sw_version + + if not old_sw_version or not os.path.isdir(old_sw_dir): + ne_entry = { + "nEIdentification": ne_info["nEIdentification"], + "swFallbackStatus": "fallbackUnsuccessful" + } + ne_list.append(ne_entry) + + num_failure += 1 + continue + + current_sw_dir = sw_install_dir_in_ne + '/' + current_sw_version + + if current_sw_version and os.path.isdir(current_sw_dir) and current_sw_dir != old_sw_dir: + shutil.rmtree(current_sw_dir, ignore_errors=True) + + old_cwd = os.getcwd() + os.chdir(sw_install_dir_in_ne) + if os.path.islink(conf.CURRENT_VERSION_DIR): + os.remove(conf.CURRENT_VERSION_DIR) + os.symlink(old_sw_version, conf.CURRENT_VERSION_DIR) + os.chdir(old_cwd) + + installed_sw_db = old_sw_dir + '/' + conf.INSTALLED_SW + if os.path.isfile(installed_sw_db): + with open(installed_sw_db) as f_installed_sw: + installed_sw_table = json.load(f_installed_sw) + if not installed_sw_table: + installed_sw_table = {} + else: + installed_sw_table = {} + + ne_info["installedSw"] = installed_sw_table + if "oldSwVersion" in ne_info: + ne_info["currentSwVersion"] = ne_info["oldSwVersion"] + del ne_info["oldSwVersion"] + + if "targetSwVersion" in ne_info: + del ne_info["targetSwVersion"] + + if "downloadedSwLocation" in ne_info: + if os.path.isdir(ne_info["downloadedSwLocation"]): + shutil.rmtree(ne_info["downloadedSwLocation"], ignore_errors=True) + del ne_info["downloadedSwLocation"] + + ne_info["status"] = conf.STATUS_ACTIVATED + ems_util.update_ne_info(ne_info) + + ne_entry = { + "nEIdentification": ne_info["nEIdentification"], + "swFallbackStatus": "fallbackSuccessful" + } + ne_list.append(ne_entry) + + if num_failure == 0: + result = conf.RESULT_SUCCESS + elif num_failure == len(ne_info_list): + result = conf.RESULT_FAILURE + else: + result = conf.RESULT_PARTLY + + ret_value = { + "nEList": ne_list, + "result": result + } + + return ret_value + + +def main(): + parser = argparse.ArgumentParser() + + parser.add_argument("--filter", help="To describe properties of the NEs to be selected", required=True) + + args = parser.parse_args() + + ne_info_list = ems_util.get_ne_info_list_from_db(args.filter) + + ret_value = sw_fallback(ne_info_list) + print json.dumps(ret_value) + + if ret_value["result"] == conf.RESULT_SUCCESS: + sys.exit(conf.RET_CODE_SUCCESS) + else: + sys.exit(conf.RET_CODE_FAILURE) + + +if __name__ == '__main__': + main() |