Fix deploy show and deploy host-list output

Fix software deploy show and deploy host-list not displaying information
issue.

Also default the deploy host state to pending when a deploy host entity
is created.

Story: 2010676
Task: 49645

TCs:
     passed: software deploy show and software deploy host-list show
             deploy data after deploy start command accepted.
     passed: display "No deploy in progress" for software deploy show
             when there is no deploy.

Change-Id: I9dc50804c66d5cb07df7717fd6623c23d0fca522
Signed-off-by: Bin Qian <bin.qian@windriver.com>
This commit is contained in:
Bin Qian 2024-03-28 19:20:51 +00:00
parent 3c3a3ecb62
commit 76739676dc
6 changed files with 12 additions and 13 deletions

View File

@ -189,8 +189,7 @@ def print_result_list(header_data_list, data_list, has_error, sort_key=0):
def print_software_deploy_host_list_result(req, data): def print_software_deploy_host_list_result(req, data):
if req.status_code == 200 and data: if req.status_code == 200:
data = data.get("data", None)
if not data: if not data:
print("No deploy in progress.\n") print("No deploy in progress.\n")
return return

View File

@ -122,10 +122,9 @@ class DeployManager(base.Manager):
print("Respond code %d. Error: %s" % (req.status_code, req.reason)) print("Respond code %d. Error: %s" % (req.status_code, req.reason))
return 1 return 1
if not data or data.get("data"): if not data:
print("No deploy in progress.") print("No deploy in progress.")
else: else:
data = data.get("data")
data = data[0] data = data[0]
data["reboot_required"] = "Yes" if data.get("reboot_required") else "No" data["reboot_required"] = "Yes" if data.get("reboot_required") else "No"
data_list = [[k, v] for k, v in data.items()] data_list = [[k, v] for k, v in data.items()]

View File

@ -21,12 +21,14 @@ from software_client.common import utils
help="List all deployments that have this state") help="List all deployments that have this state")
def do_show(cc, args): def do_show(cc, args):
"""Show the software deployments states""" """Show the software deployments states"""
# TODO(bqian) modify the cli to display with generic tabulated output
return cc.deploy.show() return cc.deploy.show()
def do_host_list(cc, args): def do_host_list(cc, args):
"""List of hosts for software deployment """ """List of hosts for software deployment """
req, data = cc.deploy.host_list() req, data = cc.deploy.host_list()
# TODO(bqian) modify display with generic tabulated output
if args.debug: if args.debug:
utils.print_result_debug(req, data) utils.print_result_debug(req, data)
else: else:

View File

@ -10,7 +10,6 @@ import logging
import os import os
from pecan import expose from pecan import expose
from pecan import request from pecan import request
from pecan import Response
import shutil import shutil
from software.exceptions import SoftwareError from software.exceptions import SoftwareError
@ -110,9 +109,8 @@ class SoftwareAPIController(object):
def deploy(self): def deploy(self):
from_release = request.GET.get("from_release") from_release = request.GET.get("from_release")
to_release = request.GET.get("to_release") to_release = request.GET.get("to_release")
result = dict(data=sc.software_deploy_show_api(from_release, to_release)) result = sc.software_deploy_show_api(from_release, to_release)
response_data = json.dumps(result) return result
return Response(body=response_data, status_code=200)
@expose('json') @expose('json')
@expose('query.xml', content_type='application/xml') @expose('query.xml', content_type='application/xml')
@ -194,9 +192,8 @@ class SoftwareAPIController(object):
@expose('json', method="GET") @expose('json', method="GET")
def host_list(self): def host_list(self):
query_hosts = dict(data=sc.deploy_host_list()) result = sc.deploy_host_list()
response_data = json.dumps(query_hosts) return result
return Response(body=response_data, status_code=200)
@expose(method='GET', template='json') @expose(method='GET', template='json')
def in_sync_controller(self): def in_sync_controller(self):

View File

@ -2363,6 +2363,8 @@ class PatchController(PatchService):
create_deploy_hosts() create_deploy_hosts()
self.db_api_instance.begin_update() self.db_api_instance.begin_update()
try: try:
# TODO(bqian) replace SW_VERSION below to current running sw_release
# (MM.mm.pp)
self.update_and_sync_deploy_state(self.db_api_instance.create_deploy, self.update_and_sync_deploy_state(self.db_api_instance.create_deploy,
SW_VERSION, to_release, True) SW_VERSION, to_release, True)
self.update_and_sync_deploy_state(self.db_api_instance.update_deploy, self.update_and_sync_deploy_state(self.db_api_instance.update_deploy,
@ -3020,7 +3022,7 @@ class PatchController(PatchService):
deploy_hosts = self.db_api_instance.get_deploy_host() deploy_hosts = self.db_api_instance.get_deploy_host()
deploy = self.db_api_instance.get_deploy_all() deploy = self.db_api_instance.get_deploy_all()
if not deploy: if not deploy:
return None return []
deploy = deploy[0] deploy = deploy[0]
deploy_host_list = [] deploy_host_list = []

View File

@ -325,7 +325,7 @@ class DeployHostHandler(DeployHosts):
super().__init__() super().__init__()
self.data = get_software_filesystem_data() self.data = get_software_filesystem_data()
def create(self, hostname, state: DEPLOY_HOST_STATES = None): def create(self, hostname, state: DEPLOY_HOST_STATES = DEPLOY_HOST_STATES.PENDING):
super().create(hostname, state) super().create(hostname, state)
deploy = self.query(hostname) deploy = self.query(hostname)
if deploy: if deploy: