Merge "Add function to read output script for subclouds"
This commit is contained in:
commit
61f51a516c
@ -1,5 +1,5 @@
|
|||||||
#
|
#
|
||||||
# Copyright (c) 2016-2022 Wind River Systems, Inc.
|
# Copyright (c) 2016-2023 Wind River Systems, Inc.
|
||||||
#
|
#
|
||||||
# SPDX-License-Identifier: Apache-2.0
|
# SPDX-License-Identifier: Apache-2.0
|
||||||
#
|
#
|
||||||
@ -41,6 +41,8 @@ CONTROLLER_1_HOSTNAME = "controller-1"
|
|||||||
DB_CONNECTION = "postgresql://%s:%s@127.0.0.1/%s\n"
|
DB_CONNECTION = "postgresql://%s:%s@127.0.0.1/%s\n"
|
||||||
KUBERNETES_CONF_PATH = "/etc/kubernetes"
|
KUBERNETES_CONF_PATH = "/etc/kubernetes"
|
||||||
KUBERNETES_ADMIN_CONF_FILE = "admin.conf"
|
KUBERNETES_ADMIN_CONF_FILE = "admin.conf"
|
||||||
|
PLATFORM_LOG = '/var/log/platform.log'
|
||||||
|
ERROR_FILE = '/tmp/upgrade_fail_msg'
|
||||||
|
|
||||||
# well-known default domain name
|
# well-known default domain name
|
||||||
DEFAULT_DOMAIN_NAME = 'Default'
|
DEFAULT_DOMAIN_NAME = 'Default'
|
||||||
@ -104,10 +106,18 @@ def execute_migration_scripts(from_release, to_release, action,
|
|||||||
stdout=subprocess.PIPE,
|
stdout=subprocess.PIPE,
|
||||||
text=True)
|
text=True)
|
||||||
if ret.returncode != 0:
|
if ret.returncode != 0:
|
||||||
|
script_output = ret.stdout.splitlines()
|
||||||
|
output_list = []
|
||||||
|
for item in script_output:
|
||||||
|
if item not in output_list:
|
||||||
|
output_list.append(item)
|
||||||
|
output_script = "\n".join(output_list)
|
||||||
msg = MSG_SCRIPT_FAILURE % (migration_script,
|
msg = MSG_SCRIPT_FAILURE % (migration_script,
|
||||||
ret.returncode,
|
ret.returncode,
|
||||||
ret.stdout)
|
output_script)
|
||||||
LOG.error(msg)
|
LOG.error(msg)
|
||||||
|
msg_temp = search_script_output(PLATFORM_LOG, f)
|
||||||
|
save_temp_file(msg, msg_temp)
|
||||||
raise Exception(msg)
|
raise Exception(msg)
|
||||||
|
|
||||||
except subprocess.CalledProcessError as e:
|
except subprocess.CalledProcessError as e:
|
||||||
@ -122,6 +132,43 @@ def execute_migration_scripts(from_release, to_release, action,
|
|||||||
raise
|
raise
|
||||||
|
|
||||||
|
|
||||||
|
def search_script_output(file_name, script):
|
||||||
|
cmd = [
|
||||||
|
"awk",
|
||||||
|
"/{script}/ {{last_match = $0}} "
|
||||||
|
"END {{if (last_match) print last_match}}".format(script=script),
|
||||||
|
file_name
|
||||||
|
]
|
||||||
|
try:
|
||||||
|
process = subprocess.Popen(cmd,
|
||||||
|
stdout=subprocess.PIPE,
|
||||||
|
stderr=subprocess.PIPE)
|
||||||
|
output, error = process.communicate()
|
||||||
|
last_match = output.decode().strip()
|
||||||
|
except Exception:
|
||||||
|
LOG.error("Failed to exec cmd. \n %s" % error)
|
||||||
|
return None
|
||||||
|
return last_match
|
||||||
|
|
||||||
|
|
||||||
|
def save_temp_file(msg, error=None):
|
||||||
|
if os.path.isfile(ERROR_FILE):
|
||||||
|
os.remove(ERROR_FILE)
|
||||||
|
|
||||||
|
MSG_FAILURE = '%s \n\n'\
|
||||||
|
'%s \n\n'\
|
||||||
|
'Check specific service log or search for' \
|
||||||
|
'this app in sysinv.log for details'
|
||||||
|
msg = MSG_FAILURE % (msg,
|
||||||
|
error)
|
||||||
|
try:
|
||||||
|
with open(ERROR_FILE, 'w+') as error_file:
|
||||||
|
error_file.write(msg)
|
||||||
|
except Exception:
|
||||||
|
LOG.warning("Error opening file %s" % ERROR_FILE)
|
||||||
|
return None
|
||||||
|
|
||||||
|
|
||||||
def get_db_connection(hiera_db_records, database):
|
def get_db_connection(hiera_db_records, database):
|
||||||
username = hiera_db_records[database]['username']
|
username = hiera_db_records[database]['username']
|
||||||
password = hiera_db_records[database]['password']
|
password = hiera_db_records[database]['password']
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
#
|
#
|
||||||
# Copyright (c) 2015 Wind River Systems, Inc.
|
# Copyright (c) 2015-2023 Wind River Systems, Inc.
|
||||||
#
|
#
|
||||||
# SPDX-License-Identifier: Apache-2.0
|
# SPDX-License-Identifier: Apache-2.0
|
||||||
#
|
#
|
||||||
@ -49,3 +49,7 @@ class UpgradeManager(base.Manager):
|
|||||||
|
|
||||||
def update(self, patch):
|
def update(self, patch):
|
||||||
return self._update(self._path(), patch)
|
return self._update(self._path(), patch)
|
||||||
|
|
||||||
|
def get_upgrade_msg(self):
|
||||||
|
path = self._path() + '/get_upgrade_msg'
|
||||||
|
return self._json_get(path)
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
#
|
#
|
||||||
# Copyright (c) 2015-2017 Wind River Systems, Inc.
|
# Copyright (c) 2015-2023 Wind River Systems, Inc.
|
||||||
#
|
#
|
||||||
# SPDX-License-Identifier: Apache-2.0
|
# SPDX-License-Identifier: Apache-2.0
|
||||||
#
|
#
|
||||||
@ -115,6 +115,7 @@ class UpgradeCollection(collection.Collection):
|
|||||||
return collection
|
return collection
|
||||||
|
|
||||||
|
|
||||||
|
ERROR_FILE = '/tmp/upgrade_fail_msg'
|
||||||
LOCK_NAME = 'UpgradeController'
|
LOCK_NAME = 'UpgradeController'
|
||||||
|
|
||||||
|
|
||||||
@ -125,6 +126,7 @@ class UpgradeController(rest.RestController):
|
|||||||
'check_reinstall': ['GET'],
|
'check_reinstall': ['GET'],
|
||||||
'in_upgrade': ['GET'],
|
'in_upgrade': ['GET'],
|
||||||
'upgrade_in_progress': ['GET'],
|
'upgrade_in_progress': ['GET'],
|
||||||
|
'get_upgrade_msg': ['GET'],
|
||||||
}
|
}
|
||||||
|
|
||||||
def __init__(self, parent=None, **kwargs):
|
def __init__(self, parent=None, **kwargs):
|
||||||
@ -175,6 +177,17 @@ class UpgradeController(rest.RestController):
|
|||||||
|
|
||||||
return {'reinstall_necessary': reinstall_necessary}
|
return {'reinstall_necessary': reinstall_necessary}
|
||||||
|
|
||||||
|
@expose('json')
|
||||||
|
def get_upgrade_msg(self):
|
||||||
|
output = ''
|
||||||
|
try:
|
||||||
|
with open(ERROR_FILE, 'r') as error_file:
|
||||||
|
output = error_file.read()
|
||||||
|
except Exception:
|
||||||
|
LOG.warning("Error opening file %s" % ERROR_FILE)
|
||||||
|
|
||||||
|
return {'error_msg:': output}
|
||||||
|
|
||||||
@wsme_pecan.wsexpose(UpgradeCollection, types.uuid, int, wtypes.text,
|
@wsme_pecan.wsexpose(UpgradeCollection, types.uuid, int, wtypes.text,
|
||||||
wtypes.text)
|
wtypes.text)
|
||||||
def get_all(self, marker=None, limit=None, sort_key='id', sort_dir='asc'):
|
def get_all(self, marker=None, limit=None, sort_key='id', sort_dir='asc'):
|
||||||
|
Loading…
Reference in New Issue
Block a user